如何在PHP中链接方法?

如何在PHP中链接方法?,php,methods,method-chaining,Php,Methods,Method Chaining,jQuery让我可以链接方法。我还记得在PHP中也看到了同样的情况,所以我写了以下内容: class cat { function meow() { echo "meow!"; } function purr() { echo "purr!"; } } $kitty = new cat; $kitty->meow()->purr(); 我无法让链条运转。它会在喵喵叫之后生成一个致命错误 将以下内容放在您希望“可链接”的每个方法的末尾: 只需从您的方法返回$this,

jQuery让我可以链接方法。我还记得在PHP中也看到了同样的情况,所以我写了以下内容:

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

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

$kitty = new cat;

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

我无法让链条运转。它会在喵喵叫之后生成一个致命错误

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


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

class Foo()
{
  function f()
  {
    // ...
    return $this;
  }
}
现在,您可以链接核心内容:

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

要回答您的cat示例,您的cat方法需要返回当前对象实例的
$this
。然后,您可以链接您的方法:

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

 function purr() {
  echo "purr!";
  return $this;
 }
}
现在您可以执行以下操作:

$kitty = new cat;
$kitty->meow()->purr();

有关此主题的真正有用的文章,请参见此处:

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

kitty的示例更具说明性;-)为什么会被否决?和其他人的答案一样…文章不见了。这是。
$kitty = new cat;
$kitty->meow()->purr();