我只需要解释或推动正确的方向如何搜索:某些类方法的子方法(?)是什么?
我见过这样的电话:
$data = Log::Bank($var1, $var2)->start();
$data = Log::Bank($var1, $var2)->refund();
或喜欢
$xml = getData($uri)->toArray();
start()
,refund()
和toArray()
选项是什么?
答案 0 :(得分:1)
这些方法返回有其他方法的对象,并且也会调用它们。因此getData将返回一些具有toArray()方法的对象。
您也可以返回对象本身并使用方法链接,即
class MailBuilder {
private $subject;
private$ $body;
public function setSubject($body) {
$this->body = $body;
return $this;
}
public function setBody($body) {
$this->subject = $subject;
return $this;
}
}
然后你可以做类似的事情:
$builder = new MailBuilder();
$builder->setSubject('something')->setBody('something');
所以你可以这样做,因为方法正在返回对象本身,虽然你可以将调用链接到下一个方法。
请记住那样的代码(调用嵌套太深的对象)并不好(它被称为火车残骸):
$object->someMethodReturningObject()->someOtherMethod()->nextObjectMethod()
答案 1 :(得分:1)
这些不是子方法,它们是方法链。在这种情况下,Log::Bank($var1, $var2)
将返回一个对象。从该方法返回的对象上有一个start()
方法,您可以使用它。因此,当您在末尾添加->start()
时,您将在返回的对象上运行它。