Non, ce n'est pas possible.
Zend_Db_Select
ne pas ne pas détecter la fin de la chaîne de la méthode. Chaque méthode que vous chaînez renvoie simplement $this
et lorsque vous arrêtez d'enchaîner, vous avez arrêté de chaîner. Il n'y a pas de magie quelque chose qui dit: Hey, c'est la fin de la chaîne.
Exemple:
$foo = $this->is()->a()->method()->chain();
Si toutes les méthodes return $this
, puis $foo
contiendra le résultat de chain()
, donc $this
à nouveau. Vous pouvez continuer à enchaîner à partir de là. Bien sûr, les méthodes feront d'autres choses en plus de renvoyer $this
, par ex. définir l'état interne - mais c'est vraiment tout ce qu'il ya à propos de Method chaining.
Si votre code doit savoir qu'il a atteint la fin d'une chaîne, vous devez configurer la chaîne avant de l'exécuter, par ex. Chain of Responsibility pattern.
Probablement j'ai besoin de vous croire mais comment pouvez-vous expliquer que Zend_Db_Select le fait simplement? – fabrik
@fabrik voir la mise à jour – Gordon
On dirait que je suis juste oublié à nouveau. Donc celui-ci (Zend_Db_Select) était le pire exemple parce qu'il ne va pas chercher quoi que ce soit, il ne construit que la requête. Ai-je raison? – fabrik