Php 函数的链接结果?从什么时候起这是可能的?

Php 函数的链接结果?从什么时候起这是可能的?,php,Php,当我错误地键入我认为会引起错误的内容时,我感到非常惊讶: function r() { return array( 'foo' ); } echo r()[0]; 令我惊讶的是,它起了作用,甚至没有引起注意。我记得我第一次尝试的时候没能做到这一点,我在代码板上注意到了这一点。我正在运行PHP5.4.4,我想知道这个功能是什么时候添加的,我在哪里可以阅读到更多关于它的信息。Google只显示了PHP5方法链接的结果,但我想这是另外一回事?是在5.4.0版中添加的是在5.4.0版中添加的因为PHP

当我错误地键入我认为会引起错误的内容时,我感到非常惊讶:

function r() { return array( 'foo' ); }
echo r()[0];

令我惊讶的是,它起了作用,甚至没有引起注意。我记得我第一次尝试的时候没能做到这一点,我在代码板上注意到了这一点。我正在运行PHP5.4.4,我想知道这个功能是什么时候添加的,我在哪里可以阅读到更多关于它的信息。Google只显示了PHP5方法链接的结果,但我想这是另外一回事?

是在5.4.0版中添加的是在5.4.0版中添加的因为PHP5.4,所以可以直接“数组解引用”函数/方法的结果;在PHP5.5中,数组文字也是如此(
array('foo','bar')[1];
甚至可能
[1,2,3][1];
,尽管我不确定后者)


示例#7数组解引用:

从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。在此之前,只能使用临时变量

从PHP5.5开始,可以对数组文本进行数组解引用

编辑:
需要明确的是:方法链接确实是另一回事;它也经常被称为“流畅的界面”。至少在我以前的工作中大家都这么说。基本思想是一个不需要返回任何内容的方法得到一个显式的
return$this语句。结果是,这些方法返回对对象的引用,您可以使用该引用调用另一个方法,而无需再次键入var:

$someObject->setProperty('Foobar')//returns $this
           ->anotherMethod();
//instead of
$someObject->setProperty('Foobar');//returns null by default
$someObject->anotherMethod();
此对象的代码如下所示:

class Foo
{
    private $properties = null;

    public function __construct(array $initialProperties = array())
    {
        $this->properties = $initialProperties;
    }
    //chainable:
    public function setProperty($value)
    {
        $this->properties[] = $value;
        return $this;//<-- that's all
    }
    //NOT chainable
    public function anotherMethod()
    {
        return count($this->properties);//or something
    }
}
class-Foo
{
私有$properties=null;
公共函数构造(数组$initialProperties=array())
{
$this->properties=$initialProperties;
}
//可链接:
公共函数setProperty($value)
{
$this->properties[]=$value;

返回$this;//因为PHP5.4,可以直接“数组解引用”函数/方法的结果;在PHP5.5中,数组文本也是如此(
array('foo','bar')[1];
甚至可能
[1,2,3][1];
,尽管我不确定后者)


示例#7数组解引用:

从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。以前,只能使用临时变量

从PHP5.5开始,可以对数组文本进行数组解引用

编辑:
需要明确的是:方法链接实际上是另一回事;它通常被称为“流畅的接口”至少在我以前的工作中大家都这么叫它。基本思想是,一个不需要返回任何内容的方法会得到一个显式的
return$this;
语句。结果是这些方法返回一个对对象的引用,您可以用它调用另一个方法,而无需再次键入var:

$someObject->setProperty('Foobar')//returns $this
           ->anotherMethod();
//instead of
$someObject->setProperty('Foobar');//returns null by default
$someObject->anotherMethod();
此对象的代码如下所示:

class Foo
{
    private $properties = null;

    public function __construct(array $initialProperties = array())
    {
        $this->properties = $initialProperties;
    }
    //chainable:
    public function setProperty($value)
    {
        $this->properties[] = $value;
        return $this;//<-- that's all
    }
    //NOT chainable
    public function anotherMethod()
    {
        return count($this->properties);//or something
    }
}
class-Foo
{
私有$properties=null;
公共函数构造(数组$initialProperties=array())
{
$this->properties=$initialProperties;
}
//可链接:
公共函数setProperty($value)
{
$this->properties[]=$value;

返回$this;//来自:“从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。在此之前,只能使用临时变量。”您也可以在那里阅读更多关于它的内容(不多,实际上没有什么特别之处)。谢谢,现在我可以放心,我没有偶然发现一些奇怪的错误,并将其留在我的代码中。;)从“从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。在这之前,只能使用临时变量。”您也可以在那里阅读更多相关内容(不多,其实没什么特别的)。谢谢你,现在我可以放心,我没有偶然发现一些奇怪的错误,并把它像那样留在我的代码中。。)