2010-04-06 12 views
5

Nie mogę znaleźć prostego przykładu na temat mojego pytania powyżej: w jaki sposób mogę wykryć koniec łańcucha metod?Wykrywanie końca łańcucha metod w PHP?

Po prostu wyglądam na przykład Zend_Db_Select, ale ten jest zbyt skomplikowany na to proste pytanie.

Czy jest możliwe złapanie "końca" łańcucha metod w PHP?

Dzięki, Fabrik

Odpowiedz

2

No. To nie jest możliwe.

Zend_Db_Select nie wykrywa , wykrywając koniec łańcucha metody. Każda metoda, która się połączy, po prostu zwraca $this, a gdy przestajesz łańcuchować, przestałeś używać łańcuchów. Nie ma magii, która mówi: Hej, to koniec łańcucha.

przykład:

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

Jeśli wszystkie metody return $this, następnie $foo może zawierać wynik chain() tak $this ponownie. Możesz dalej prowadzić łańcuch. Oczywiście, metody będą wykonywać inne rzeczy oprócz zwracania $this, np. ustaw stan wewnętrzny - ale tak naprawdę wszystko to ma wartość około Method chaining.

Jeśli twój kod musi wiedzieć, że dotarł do końca łańcucha, musisz skonfigurować łańcuch przed jego uruchomieniem, np. Chain of Responsibility pattern.

+0

Prawdopodobnie muszę ci uwierzyć, ale jak możesz wyjaśnić, że Zend_Db_Select właśnie to robi? – fabrik

+0

@fabrik zobacz aktualizację – Gordon

+0

Wygląda na to, że znowu mnie to przegapiło. Więc ten (Zend_Db_Select) był najgorszym przykładem, ponieważ nie pobiera niczego, tylko buduje zapytanie. Czy mam rację? – fabrik

Powiązane problemy