Php 这些是做什么用的:$this->;foo()->;bar();你为什么要使用它们?你如何使用它们?
我以前在脚本中看到过这些,但尝试过在谷歌上搜索,但似乎找不到任何关于它们的信息,尽管我打赌如果你知道它们的名字,它们很容易找到 它们是干什么用的?他们要加入两种方法吗Php 这些是做什么用的:$this->;foo()->;bar();你为什么要使用它们?你如何使用它们?,php,Php,我以前在脚本中看到过这些,但尝试过在谷歌上搜索,但似乎找不到任何关于它们的信息,尽管我打赌如果你知道它们的名字,它们很容易找到 它们是干什么用的?他们要加入两种方法吗 $this->foo()->bar(); 你是怎么做的?一个简单的小课堂答案和描述会很酷 你为什么要做它们?简单的使用会很酷 我见过框架将其用于以下表单: Form::input('name','input', array())->outside('morestuff') 链接和详细信息会很好。这只是为了方便
$this->foo()->bar();
你是怎么做的?一个简单的小课堂答案和描述会很酷
你为什么要做它们?简单的使用会很酷
我见过框架将其用于以下表单:
Form::input('name','input', array())->outside('morestuff')
链接和详细信息会很好。这只是为了方便起见,这是一个编码风格的问题。假设您希望在一个对象上调用两个方法,那么在标准样式中,您将编写如下内容:
$this->foo();
$this->bar();
如果您喜欢在单个指令中编写它,那么您可以使foo
返回$this
,这将允许您编写$this->foo()->bar()
。当然,您可以想象foo
返回可以调用bar
的其他对象
在第二种情况下,没有什么特别的,函数Form::input
返回一个对象,您可以在该对象上调用一个方法。这些对象上只包含函数/方法。它们的构造方式很简单,就像一个“流畅”的API。当你看这一行时:
$this->foo()->bar();
你看到的是两个物体。(根据对象的设计方式,可能是相同类型的,也可能不是相同的实例。)第一个对象是:
$this
该对象上有一个名为foo
的函数,您可以调用该函数:
$this->foo()
此函数返回一个对象,该对象有一个名为bar
的函数,也可以调用该函数:
$this->foo()->bar()
有时为了清晰起见,您可能需要提取一个功能等效的解释变量:
$anotherObj = $this->foo();
$anotherObj->bar();
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();
这是否回答了您的所有问题:?它被称为“流畅接口”或“方法链接”-TLDR版本:每个方法都有返回$this
,基本上。jQuery在JavaScript中执行此操作,Prope(ORM)在PHP中执行此操作,Spiderling(测试框架)也在PHP中执行此操作。可能有很多例子。这非常好,因为通常可以将IDE设置为在每个->
引用上自动完成,这样就不用记住方法了。