PHP - 使用方法链接扩展以前的方法

时间:2015-10-27 17:01:23

标签: php method-chaining

我怎样才能进行其他方法(如Laravel),在链接中扩展? 例如: $page->loadFooter()->withExtension("script_name")其中withExtension()是其他方法,会影响loadFooter()方法的结果吗?

3 个答案:

答案 0 :(得分:1)

方法链的工作方式是每个调用都必须返回对象本身(即$this)。

所以你的页面类定义如下:

class Page {
    public function loadFooter() {
        /* ... */
        return $this;
    }

    public function withExtension($script) {
        /* ... */
        return $this;
    }
}

方法链中实际发生的是在返回的对象上调用下一个函数。

答案 1 :(得分:0)

withExtension只需要返回一个具有$page方法的对象。因此,如果您希望影响loadFooter对象,则/*Within $page's class*/ public function loadFooter(){ /**insert Code**/ return $this; } 应返回其对象。

TfsTeamProjectCollection teamProjectCollection = configServer.GetTeamProjectCollection(collectionId);
teamProjectCollection.EnsureAuthenticated;

答案 2 :(得分:0)

在您的函数中,您返回一个对象,通常为$this

class Page {
    public $footer;
    public function loadFooter() {
        $this->footer = file_get_contents("footer.html");
        return $this;
    }
    public function withExtension($script) {
        $this->footer = str_replace($this->footer, "</body>", "<script src='{$script}'></script></body>");
    }
}

$page = new Page();
$page->loadFooter()->withExtension("script name");