2010-04-06 14 views
5

Ich kann kein einfaches Beispiel zu meiner Frage finden: Wie kann ich das Ende einer Methodenkette erkennen?Das Ende der Methodenkette in PHP erkennen?

Ich habe nur Zend_Db_Select zum Beispiel angesehen, aber dieses ist zu komplex für diese einfache Frage, die ich denke.

Ist es möglich, das 'Ende' einer Methodenkette in PHP abzufangen?

Dank, fabrik

Antwort

2

Nein, das ist nicht möglich.

Zend_Db_Select nicht erkennen das Ende der Methodenkette. Jede Methode, die du kettest, gibt einfach $this zurück und wenn du mit der Verkettung aufhörst, hast du aufgehört zu verketten. Es gibt keine Magie, die sagt: Hey, das ist das Ende der Kette.

Beispiel:

$foo = $this->is()->a()->method()->chain(); 

Wenn alle Methoden return $this, dann $foo das Ergebnis chain() enthalten wird, so $this wieder. Von dort aus können Sie weiterketten. Natürlich werden die Verfahren andere Dinge tun als $this, z. setze den internen Zustand - aber das ist wirklich alles über Method chaining.

Wenn Ihr Code wissen muss, dass er das Ende einer Kette erreicht hat, müssten Sie die Kette vor der Ausführung einrichten, z. Chain of Responsibility pattern.

+0

Wahrscheinlich muss ich dir glauben, aber wie kannst du erklären, dass Zend_Db_Select es einfach macht? – fabrik

+0

@fabrik siehe update – Gordon

+0

Sieht aus wie ich es gerade wieder übersehen habe. Also dieses (Zend_Db_Select) war das schlimmste Beispiel, weil es nichts abruft, sondern nur die Abfrage erstellt. Habe ich recht? – fabrik

Verwandte Themen