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

PHP - use method chaining to extends previous method

我怎样才能做额外的方法(例如Laravel),以扩展链接中的先前内容? 例如: $page->loadFooter()->withExtension("script_name") 其中 withExtension() 是附加方法,影响 loadFooter() 方法的结果 ?

loadFooter() 只需要 return 一个具有 withExtension 方法的对象。所以如果你想影响 $page 对象而不是 loadFooter 应该 return 它的对象。

/*Within $page's class*/

public function loadFooter(){
  /**insert Code**/
  return $this;
}

在你的函数中你 return 一个对象,通常是 $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");

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

因此您的页面 class 定义如下所示:

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

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

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