导致问题的代码的简化版本是:
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());
以上作品。只是想知道是否有更好的方法来做到这一点。令人遗憾的是,callable不被认为是静态的,考虑到它们(据我所知)不需要做任何评估 - 即使这样,我们现在对静态属性进行基本操作......