Php 私有静态属性中的匿名函数
引起问题的代码的简化版本为:Php 私有静态属性中的匿名函数,php,php-7,Php,Php 7,引起问题的代码的简化版本为: class Test { private static $foo = [ "bar" => "baz", "callable" => function() {echo "Derp";} ]; }; var_dump(new Test()); 以上是: PHP致命错误:常量表达式中包含无效操作。。。在线5 有没有干净的替代品,或者我必须求助于 class Test { private static
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());
以上工作。只是想知道有没有更好的方法。令人遗憾的是,可调用项不被认为是静态可调用的,考虑到它们(据我所知)不需要任何计算——即使这样,我们现在也有了关于静态属性的基本操作…为什么不在类上使“可调用”成为一个静态方法?因为实际的代码是一个大数组。。。我想“严格正确”的方法是为每种类型的代码都有一个子类。。。事实上,仔细想想,我可能会这么做…现在没有一个干净的替代方案,不。常量只能是null、boolean、integer、float、string或它们的数组。这在未来的版本中可能会发生变化,但目前情况就是这样。您可以使用一个命名函数,然后使用
“callable”=>“function\u name”
(如果函数名为function\u name
),但这并不理想。您还可以使用静态方法(“callable”=>[“Test”,“methodName”]
)。