Jeder der sich mit OOP auseinander setzt wird wissen wie man meine Methode aufruft. Auch wird man wissen, dass manchmal mehrere Methoden der gleichen Klasse hintereinander aufgerufen werden müssen. Doch dies ist oft mit viel Tipparbeit verbunden, da jedes mal die Variable der Klasseninstanz neu getippt werden muss. Hier gibt es Abhilfe, genauer gesagt das Method Chaining Pattern.
Wer es nicht kennt, folgendermaßen sehen Aufrufe beim Method Chaining aus:
$var->setName(‘Hallo’)->setNick(‘Welt’)->setPassword(md5(’123′));
Wie ersichtlich wird der Variablenname nur einmal geschrieben und bei allen Methoden verwendet. Die Umsetzung von diesem ist recht einfach, jede der oben genannten Methoden hat am Ende nämlich ein:
return $this;
stehen. Hierdurch wird immer die aktuelle Instanz zurück gegeben und auf diese wieder zugegriffen.
Wenn etwas anderes als $this zurück gegeben wird ist die Methode natürlich für dieses Pattern ungeeignet. Der Vorteil liegt aber gerade bei settern, da hier nur Werte gesetzt werden und ein Rückgabewert ansonsten eh unnütz wäre.
Wer gerne noch ein Beispiel hätte:
class Test {
protected $_name = '';
public function setName($name) {
$this->_name = $name;
return $this;
}
public function getName() {
return $this->_name;
}
}
$test = new Test();
$test->setName('test')->setName('test2');
echo $test->getName(); // gibt "test2" aus
Auch (besser) bekannt als “Fluent Interface”