为什么此代码在所有我调用了一个以上函数的函数中都引发语法错误,这是意外的->函数[duplicate]

问题描述 投票:0回答:1

为什么会抛出此代码

语法错误,意外的'->'T_OBJECT_OPERATOR),期望为','或';'

php 7.1

<?php
class TestHtml
{
    public function Send() { return $this; }
    public function Dispose() { return $this; }
    public function ToString() { return 'Done'; }
}
echo new TestHtml->Send()->Dispose()->ToString(); // there error 
?>
php
1个回答
1
投票

PHP无法理解这一点。它不能弄清楚第一部分是对构造函数的调用。使用括号。

<?php
class TestHtml
{
    public function Send() { return $this; }
    public function Dispose() { return $this; }
    public function ToString() { return 'Done'; }
}
echo (new TestHtml)->Send()->Dispose()->ToString(); // there error 

或者,您可以先创建对象,然后调用其他函数。

$object = new TestHtml;
echo $object->Send()->Dispose()->ToString();

而且只是为了好玩,您可以创建一个静态函数来创建类。

<?php
class TestHtml
{
    public function Send() { return $this; }
    public function Dispose() { return $this; }
    public function ToString() { return 'Done'; }
    public static function make() { return new self; }
}
echo TestHtml::make()->Send()->Dispose()->ToString();
© www.soinside.com 2019 - 2024. All rights reserved.