How do I chain methods in PHP? [duplicate]

微笑、不失礼 提交于 2019-12-28 04:09:24

问题


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.


回答1:


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




回答2:


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

return $this;



回答3:


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();



回答4:


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



来源:https://stackoverflow.com/questions/7549423/how-do-i-chain-methods-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!