3

导致问题的代码的简化版本是:

class Test {
    private static $foo = [
        "bar" => "baz",
        "callable" => function() {echo "Derp";}
    ];
};
var_dump(new Test());

以上抛出:

PHP 致命错误: 常量表达式在第 5 行的 ... 中包含无效操作

是否有任何干净的替代方案,或者我将不得不诉诸...

class Test {
    private static $foo = null;
    public static function initFoo() {
        self::$foo = self::$foo ?? [
            "bar" => "baz",
            "callable" => function() {echo "Derp";}
        ];
    }
}
Test::initFoo();
var_dump(new Test());

以上工作。只是想知道是否有更好的方法来做到这一点。遗憾的是,callables 不被认为是静态的,考虑到它们(据我所知)不需要任何评估来做 - 即使那样,我们现在对静态属性有基本的操作......

4

0 回答 0