Hauptmenü

Untermenü

OOP PHP5 - Grundlagen - Vererbung - Getter- und Settermethoden

1. Probleme und Ansichten

Im vorherigen Abschnitt habe ich euch eine ziemlich unsaubere Umsetzung gezeigt, da es zwei Möglichkeiten gab, eine Eigenschaft zu ändern. Darum hat sich mittlerweile die Ansicht verbreitet, dass man die Eigenschaften eines Objektes nur über Methoden ändern oder abrufen darf. Deshalb wird dafür auch die Sichtbarkeitsstufe gerne auf private gesetzt. Das hat zwar mit der eigentlichen Vererbung nichts zu tun, ich erwähne es hier trotzdem.

2. Die Elternklasse

Diesmal kümmern wir uns nicht um die Säugetiere und lassen auch mal die Frauen zu ihrem Recht kommen. Also, wir haben eine Klasse Mensch mit der privaten Eigenschaft name. Dazu gibt es einmal eine Methode, um selbige zu setzen und eine, um sie zurückzuliefern.


class Mensch
{
  private $name;
  protected function setName($value)
  {      
    $this -> name $value;
  }
  protected function getName()
  {
    return $this -> name;
  }
}

setName ist hier die Setter-Methode, da man mit ihr der Eigenschaft name einen Wert verpassen kann. getName dagegen ist die Getter-Methode, da man sich über sie den Wert der Eigenschaft holen kann.

3. Die Kindklasse

Hier gehe ich jetzt einfach mal davon aus, dass die daraus erzeugten Objekte einen Zugriff auf ihren Namen haben müssen. Das geht auch anders, ist aber erst mal nicht von Belang. Die abgeleitete Klasse Frau muss dementsprechend ebenfalls zwei Methoden dafür bereitstellen.


class Frau extends Mensch
{
  public function setzNamen($value)
  {
    $this -> setName($value);
  }
  public function holNamen()
  {
    return $this -> getName();
  }
}

4. Das Objekt

... setzt nun seinen, oder genauer gesagt, ihren Namen über die Methode setzNamen der Klasse Frau. Und die nutzt nun die Methode setName der Elternklasse Mensch, um den Wert tatsächlich zu ändern. Wenn es darum geht, den Namen aus dem Objekt heraus aufzurufen, so geschieht das über holNamen und getName. Der Weg ist derselbe.


$doerte = new Frau;
$doerte -> setzNamen('Dörte');
echo $doerte -> holNamen();

5. Sinn und Zweck

Wenn ich mir die Diskussion in diversen Foren zu diesem Thema ansehe, so gibt es zwei verfeindete Lager, die beide ihre Ansichten mit brachialer Gewalt verteidigen. Die einen halten diese Lösung für den Königsweg, die anderen für eine direkte Fahrt in die Hölle. Ich persönlich bin in diesem Fall neutral. Denn diese Methode kann sehr hilfreich sein, aber auch recht hinderlich. Ach, bildet euch einfach selber eine eigene Meinung dazu.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt