1

Barプライベートな静的プロパティを持つクラス (例: ) を作成したいと思います。このプロパティは、 のオブジェクトの配列である必要がありますFoo

<?php

class Foo {

}

class Bar {
    private static $classes = array(new Foo(), new Foo());

    public static function testClasses() {
        var_dump(self:$classes);
    }
}

Bar::testClasses();

ただし、このコードは例外をスローします。

PHP Parse error: syntax error, unexpected 'new' (T_NEW), expecting ')' in [...]/test.php on line 8

これが不可能な理由を誰かが説明してくれますか?

4

1 に答える 1

2

ドキュメントから:

この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。

プロパティ定義でクラスをインスタンス化するための new の使用は、実行時の情報に依存します

于 2013-07-23T15:55:26.927 に答える