Как я связываю методы в PHP? [дубликат]
этот вопрос уже есть ответ здесь:
- PHP метод цепочки? 8 ответов
jQuery позволяет мне цепные методы. Я также помню, что видел то же самое в PHP, поэтому я написал следующее:
class cat {
function meow() {
echo "meow!";
}
function purr() {
echo "purr!";
}
}
$kitty = new cat;
$kitty->meow()->purr();
Я не могу заставить цепь работать. Он генерирует фатальную ошибку сразу после мяу.
4 ответов
чтобы ответить на ваш пример кошки, методы вашей кошки должны вернуться $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
просто вернуть из вашего метода, т. е. (ссылка) объекта:
class Foo()
{
function f()
{
// ...
return $this;
}
}
Теперь вы можете цепь на содержание сердца:
$x = new Foo;
$x->f()->f()->f();
yes используя php 5, Вы можете вернуть объект из метода. Итак, возвращаясь $this
(который указывает на текущий объект), вы можете достичь цепочкой