PHP方法链接?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我正在使用PHP 5,并且我听说过面向对象方法中的一个新功能,称为“方法链接”。究竟是什么?我如何实现它?

提问于
用户回答回答于

它真的很简单,你有一系列的mutator方法,都返回原始(或其他)的对象,这样你可以保持调用函数。

<?php
class fakeString
{
    private $str;
    function __construct()
    {
        $this->str = "";
    }

    function addA()
    {
        $this->str .= "a";
        return $this;
    }

    function addB()
    {
        $this->str .= "b";
        return $this;
    }

    function getStr()
    {
        return $this->str;
    }
}


$a = new fakeString();


echo $a->addA()->addB()->getStr();

这输出“ab”

用户回答回答于

基本上,你拿一个对象:

$obj = new ObjectWithChainableMethods();

调用一个return $this;最终有效的方法:

$obj->doSomething();

由于它返回的是同一个对象,或者说是同一个对象的引用,所以你可以继续调用同一个类的方法返回值,如下所示:

$obj->doSomething()->doSomethingElse();

扫码关注云+社区

领取腾讯云代金券