jQuery让我链接方法。我还记得在PHP中看到相同的内容,所以我写了这个:
class cat {
function meow() {
echo "meow!";
}
function purr() {
echo "purr!";
}
}
$kitty = new cat;
$kitty->meow()->purr();
我无法让链条起作用。它会在喵喵之后产生致命错误。
答案 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
(指向当前对象),您可以实现方法链接