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