如何在PHP中链接方法?

时间:2011-09-25 23:52:54

标签: php methods method-chaining

jQuery让我链接方法。我还记得在PHP中看到相同的内容,所以我写了这个:

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

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

$kitty = new cat;

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

我无法让链条起作用。它会在喵喵之后产生致命错误。

4 个答案:

答案 0 :(得分:40)

要回答你的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

答案 1 :(得分:7)

将以下内容放在您希望制作“可链接”的每种方法的末尾:

return $this;

答案 2 :(得分:4)

只需从您的方法返回$this,即(引用)对象本身:

class Foo()
{
  function f()
  {
    // ...
    return $this;
  }
}

现在你可以链接内心:

$x = new Foo;
$x->f()->f()->f();

答案 3 :(得分:2)

是的,使用php 5你可以从方法返回对象。因此,通过返回$this(指向当前对象),您可以实现方法链接