PHP方法链接还是流畅的界面?
2022-08-30 06:28:16
我正在使用PHP 5,我听说过面向对象方法中的一个新功能,称为“方法链接”。它到底是什么?如何实现它?
我正在使用PHP 5,我听说过面向对象方法中的一个新功能,称为“方法链接”。它到底是什么?如何实现它?
这很简单,真的。您有一系列赋值函数方法,这些方法都返回原始(或其他)对象。这样,您就可以继续对返回的对象调用方法。
<?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();
就是这样,真的。两件重要的事情:
正如你所注意到的,它只是 PHP 5。它在 PHP 4 中无法正常工作,因为它按值返回对象,这意味着您正在对象的不同副本上调用方法,这会破坏您的代码。
同样,您需要在可链接方法中返回对象:
public function doSomething() {
// Do stuff
return $this;
}
public function doSomethingElse() {
// Do more stuff
return $this;
}