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.
Probabilmente ho bisogno di crederti ma come puoi spiegare che Zend_Db_Select lo sta facendo? – fabrik
@fabrik vedi aggiornamento – Gordon
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