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 对象上调用下一个函数。
我怎样才能做额外的方法(例如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 对象上调用下一个函数。