这些有什么用: $this->foo()->bar();你为什么使用它们以及如何使用它们?

  • 本文关键字:何使用 bar foo this- php
  • 更新时间 :
  • 英文 :


我以前在脚本中看到过这些,但尝试在谷歌上查找,但似乎找不到任何关于它们的内容,尽管我敢打赌,如果你知道它们的名字,它们很容易找到。

它们是干什么用的?他们是否要加入两种方法?

$this->foo()->bar();

你如何制作它们?一个简单的小类答案以及描述会很酷

你为什么要做它们?简单的使用会很酷

我已经看到框架将它们用于以下形式:

Form::input('name','input', array())->outside('morestuff')

链接和详细信息会很棒。

这些只是带有函数/方法的对象。 它们只是以类似于"流畅"API 的方式构建的。 当您查看此行时:

$this->foo()->bar();

你正在看两个对象。 (这可能是也可能不是巧合的同一类型,甚至是相同的实例,具体取决于对象的设计方式。 第一个对象是:

$this

该对象上有一个名为 foo 的函数,您可以调用它:

$this->foo()

此函数返回一个对象,对象具有一个名为 bar 的函数,也可以调用该函数:

$this->foo()->bar()

有时为了清楚起见,您可能希望提取一个解释变量,该变量在功能上是等价的:

$anotherObj = $this->foo();
$anotherObj->bar();

这只是为了方便起见,这是编码风格的问题。假设你想在一个对象上调用两个方法,那么在标准样式中,你会写如下的东西:

$this->foo();
$this->bar();

如果您希望将其写入单个指令,则可以foo返回$this,这将允许您编写$this->foo()->bar()。当然,您可以想象foo返回一些可以调用bar的其他对象。

在第二种情况下,没有什么特别的,函数Form::input返回一个对象,你调用方法。

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();

最新更新