【问题标题】:Calling method directly after new?新建后直接调用方法?
【发布时间】:2012-06-07 13:43:50
【问题描述】:

PHP 是否允许像这样从新对象中调用方法:

new CEntry( new Control() )->actuate();

我可以将一个新对象作为参数传入,如new Control()。但是,它似乎不喜欢 actuate() 调用。

我遇到了错误:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/foo/public_html/develop/foos/source/class.CEntry.php on line 4

【问题讨论】:

标签: php


【解决方案1】:

直到 PHP 5.4,没有。在 PHP 5.3 及更早版本中,您必须使用另一个变量:

$obj = new CEntry( new Control() );
$obj->actuate();

【讨论】:

    【解决方案2】:

    PHP 是否允许像这样从新对象中调用方法:

    new CEntry( new Control() )->actuate();
    

    它在 >= PHP 5.4 中实现

    【讨论】:

    • @HiroProtagonist 不确定,我在一些 PHP 5.4 发行说明 IIRC 中读到过。
    【解决方案3】:

    对于低于 5.4 的版本,您实际上可以通过使用括号来使用此技巧:

    (new CEntry( new Control() ))->actuate();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2014-07-19
      • 2011-02-07
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多