如何在 PHP 中链接方法?

发布于 2024-12-06 14:00:20 字数 249 浏览 1 评论 0原文

jQuery 让我可以链接方法。我还记得在 PHP 中看到过同样的情况,所以我写道:

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

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

$kitty = new cat;

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

我无法让链条工作。它在喵叫声之后立即生成一个致命错误。

jQuery lets me chain methods. I also remember seeing the same in PHP so I wrote this:

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

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

$kitty = new cat;

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

I cannot get the chain to work. It generates a fatal error right after the meow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鱼窥荷 2024-12-13 14:00:20

要回答您的猫示例,您的猫的方法需要返回 $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

To answer your cat example, your cat's methods need to return $this, which is the current object instance. Then you can chain your methods:

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

 function purr() {
  echo "purr!";
  return $this;
 }
}

Now you can do:

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

For a really helpful article on the topic, see here: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html

雨的味道风的声音 2024-12-13 14:00:20

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

return $this;

Place the following at the end of each method you wish to make "chainable":

return $this;
猫瑾少女 2024-12-13 14:00:20

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

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

现在您可以在心里链接内容:

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

Just return $this from your method, i.e. (a reference to) the object itself:

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

Now you can chain at heart's content:

$x = new Foo;
$x->f()->f()->f();
故人爱我别走 2024-12-13 14:00:20

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

yes using php 5 you can return object from a method. So by returning $this (which points to the current object), you can achieve method chaining

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文