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 回答