Обнаружение конца цепочки методов в PHP? - PullRequest
5 голосов
/ 06 апреля 2010

Я не могу найти простой пример по моему вопросу выше: как я могу определить конец цепочки методов?

Я только что посмотрел Zend_Db_Select, например, но этот слишком сложный для этого простого вопроса, я думаю.

Возможно ли поймать конец цепочки методов в PHP?

спасибо, Fabrik

1 Ответ

2 голосов
/ 06 апреля 2010

Нет. Это невозможно.

Zend_Db_Select не не обнаруживает конец цепочки методов. Каждый цепочечный метод просто возвращает $this, и когда вы прекращаете цепочку, вы прекращаете цепочку. Нет волшебства, что говорит: Эй, это конец цепи .

Пример:

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

Если все методы return $this, то $foo будет содержать результат chain(), поэтому $this снова. Вы можете продолжать цепочку оттуда. Конечно, методы будут делать и другие вещи, кроме возврата $this, например установить внутреннее состояние - но это действительно все, что есть о Метод цепочки .

Если ваш код должен знать, что он достиг конца цепочки, вам придется настроить цепочку до ее запуска, например, Схема цепочки ответственности .

...