2

メンバー関数 f() を持つクラス A が与えられた場合、次の明らかに妥当なコード:

( new A() )->f();

構文エラー「unexpected T_OBJECT_OPERATOR」で失敗します。

これについての説明はありますか?

編集:Mageek が推測したように、私はこの動作を理解しようとしています。私はすでにそれを回避する方法を知っています。

4

2 に答える 2

2

これは PHP 5.4 以降でのみ利用可能です。それまでは、インスタンスを変数に割り当てて使用する必要があります。

参照: http://www.php.net/manual/en/migration54.new-features.php

于 2012-07-20T21:02:10.173 に答える
0

ご要望の機能は PHP 5.4 から利用可能です。PHP 5.4 の新機能のリストは次のとおりです。

http://docs.php.net/manual/en/migration54.new-features.php

(new Foo)->bar() など、インスタンス化時のクラス メンバー アクセスが追加されました。


しかし、このトリックを試すことができます:

class TestClass {
    protected $_testvar;

    public function __construct($param) {
        $this->_testvar = $param;
    }
    public function testMethod() {
        return $this->_testvar;
    }
}

function TestClass($param) { return new TestClass($param); }

これで、次のように記述できます。

$a = TestClass(2)->testMethod();
于 2012-07-20T21:06:01.323 に答える