我以前在脚本中看过这些,但是我们试过在谷歌上看,但似乎找不到任何东西,虽然我敢打赌,如果你知道他们的名字,他们很容易找到。
它们用于什么?他们要加入两种方法吗?
$this->foo()->bar();
你是如何制作它们的?一个小的简单类答案以及描述将很酷
你为什么要制作它们?一个简单的用途就是很酷
我见过框架将它们用于以下形式:
Form::input('name','input', array())->outside('morestuff')
链接和细节会很棒。
答案 0 :(得分:2)
这些只是objects,上面有函数/方法。他们只是简单地构建,使他们像一个流利的" API。当你看这一行时:
$this->foo()->bar();
您正在查看两个对象。 (根据对象的设计方式,这可能是也可能不是同一类型,甚至是同一个实例。)第一个对象是:
$this
该对象在其上有一个名为foo
的函数,您可以调用它:
$this->foo()
此函数返回一个对象,该对象有一个名为bar
的函数,也可以调用它:
$this->foo()->bar()
有时为了清楚起见,您可能需要提取一个解释变量,它在功能上是等价的:
$anotherObj = $this->foo();
$anotherObj->bar();
答案 1 :(得分:0)
这只是为了方便,它是编码风格的问题。假设您想要在对象上调用两个方法,那么在标准样式中,您可以编写如下内容:
$this->foo();
$this->bar();
如果您希望在单个指令中编写,则可以foo
返回$this
,这样您就可以编写$this->foo()->bar()
。当然,您可以想象foo
返回可以调用bar
的其他对象。
在第二种情况下没有什么特别的,函数Form::input
返回一个你调用方法的对象。
答案 2 :(得分:0)
php类可以使用语句return $this;
返回自己,这允许你进行方法链接。
class MyClass{
public function foo(){
// ...
return $this; // Return itself
}
public function bar(){
// ...
return $this; // Return itself
}
public function test(){
$this->foo()->bar();
//....
}
}
课外:
$myClass = new MyClass();
$myClass->foo()->bar();
与此
完全相同$myClass = new MyClass();
$myClass->foo();
$myClass->bar();