jQuery позволяет мне цепочки методов. Я также помню, что я видел то же самое в PHP, поэтому я написал следующее:
class cat { function meow() { echo "meow!"; } function purr() { echo "purr!"; } } $kitty = new cat; $kitty->meow()->purr();
Я не могу заставить цепочку работать. Он генерирует фатальную ошибку сразу после мяука.
Чтобы ответить на ваш пример с кошкой, методы вашей кошки должны вернуть $this
, который является текущим экземпляром объекта. Затем вы можете связать свои методы:
class cat { function meow() { echo "meow!"; return $this; } function purr() { echo "purr!"; return $this; } }
Теперь вы можете сделать:
$kitty = new cat; $kitty->meow()->purr();
Для действительно полезной статьи по этой теме см. Здесь: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html
В конце каждого метода, который вы хотите сделать «цепочкой», поместите следующее:
return $this;
Просто верните $this
из вашего метода, то есть (ссылку на) самого объекта:
class Foo() { function f() { // ... return $this; } }
Теперь вы можете сосредоточиться на сердце:
$x = new Foo; $x->f()->f()->f();
да, используя php 5, вы можете вернуть объект из метода. Таким образом, возвращая $this
(что указывает на текущий объект), вы можете добиться цепочки методов