如何在PHP中链接方法?
jQuery让我可以链接方法。我还记得在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,
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();