Подтвердить что ты не робот

Как я могу использовать методы в PHP?

jQuery позволяет мне использовать методы цепочки. Я также помню, что я видел то же самое в PHP, поэтому написал следующее:

class cat {
 function meow() {
 echo "meow!";
 }

function purr() {
 echo "purr!";
 }
}

$kitty = new cat;

$kitty->meow()->purr();

Я не могу заставить цепочку работать. Он генерирует фатальную ошибку сразу после мяука.

4b9b3361

Ответ 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 (который указывает на текущий объект), вы можете добиться цепочки методов