PHP:静态属性中的类实例化会引发异常

时间:2013-07-23 15:51:17

标签: php arrays static-members

我想创建一个具有私有静态属性的类(例如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

有人可以解释一下为什么这不可能吗?

1 个答案:

答案 0 :(得分:2)

来自docs

  

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

使用new来实例化属性定义中的类取决于运行时信息