2010-04-06 13 views
5

Non riesco a trovare un semplice esempio sulla mia domanda precedente: come posso rilevare la fine di una catena di metodi?Rilevamento della catena del metodo in PHP?

Ho appena guardato Zend_Db_Select per esempio ma questo è troppo complesso per questa semplice domanda, penso.

È possibile rilevare la "fine" di una catena di metodi in PHP?

grazie, Fabrik

risposta

2

No. Questo non è possibile.

Zend_Db_Select non rilevare la fine della catena del metodo. Ogni metodo di catena restituisce $this e quando si interrompe il concatenamento, si interrompe il concatenamento. Non c'è magia qualcosa che dice: Ehi, questa è la fine della catena.

Esempio:

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

Se tutti i metodi return $this, quindi $foo conterranno il risultato di chain(), così $this nuovamente. Puoi continuare a concatenare da lì. Naturalmente, i metodi faranno altre cose oltre a restituire $this, ad es. imposta lo stato interno - ma questo è tutto ciò che c'è circa Method chaining.

Se il codice deve sapere che ha raggiunto la fine di una catena, è necessario impostare la catena prima di eseguirla, ad es. Chain of Responsibility pattern.

+0

Probabilmente ho bisogno di crederti ma come puoi spiegare che Zend_Db_Select lo sta facendo? – fabrik

+0

@fabrik vedi aggiornamento – Gordon

+0

Sembra che sia appena passato di nuovo. Quindi questo (Zend_Db_Select) è stato l'esempio peggiore perché non recupera nulla solo crea la query. Ho ragione? – fabrik

Problemi correlati