Objektorientierung

Aus m-wiki
Zur Navigation springen Zur Suche springen

Definitionen

Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) Objektmethoden = Funktionen

Klassen

Klassen werden vor der Verwendung erstellt und mit include eingebunden. Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden.

  Klasse -> Objekt:
  class Rechteck {
    var Länge;
    var Breite;
    
    function Fläche () {
      return $this->Länge * $this->Breite;
    } // end function Fläche
  } // end class Rechteck
  
  $testRechteck = new Rechteck;
  $testRechteck->Länge = 5;
  $testRechteck->Breite = 4;
  echo $testRechteck->Fläche(); // ergibt 20
  
  <?php
    class KlassenName {
     // ...
  } // end KlassenName 
  ?>

  Vererbung:
  class Quader extends Rechteck {
    var Höhe;

    function Volumen () {
      return $this->Höhe*Fläche();
    } // end function Volumen
  } // end class Quader

Alle Funktionen und Werte werden vererbt und stehen zur Verfügung

  $testQuader = new Quader;
  $testQuader->Länge = 7;
  $testQuader->Breite = 3;
  $testQuader->Höhe = 5;
  echo $testQuader->Volumen(); // ergibt 105

Konstruktor

Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.

  class test {
    var $miau;

    function test() {
      $this->miau = true;
    } // end function test
  } // end class test

Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\

    var $x_ok;
    var $y_ok;
    
    function test ($x = "", $y = "") {
      $this->testVar($x);
      $this->testVar($y);
    } // end function test
    
    function testVar($testvariable) {
      if ($testvariable == "muh") { $this->x_ok = $testvariable }
    } // end function testVar

Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.

    $x_ok = $this->testVar($x);

    function testVar($testvariable) {
      if ($testvariable == "muh") { 
        return $testvariable 
      }
      else {
        return "";
      }
    } // end function testVar

Mit Werten wird das Objekt folgendermassen erzeugt:

    $objekt = new Objekt("muh", "miau");
    $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.

Objekte kopieren / referenzieren

Beim Zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt.