导致问题的代码的简化版本是:
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 不被认为是静态的,考虑到它们(据我所知)不需要任何评估来做 - 即使那样,我们现在对静态属性有基本的操作......