我正在尝试声明一个函数并将其存储在我班级的private static
字段中。我有这样的事情:
class MyClass {
private static $myFunction = function() { /* stuff here */ };
}
但是我在创建函数的行上不断出现此错误:
PHP Parse错误:语法错误,意外'功能'(T_FUNCTION)...
我这是基于this answer以及PHP manual pages所说的内容。但这对我不起作用。为什么?我该怎么办?
所有这一切的目标是我能够将函数存储在数组中:
private static $options = [
'function' => MyClass::$myFunction
];
那么您认为实现这一目标的最佳方式是什么?如果你想知道的话,我正在使用PHP 5.5.14。
更新:
我尝试过几种不同的方法。像这样:
class MyClass {
private static function myFunction() { /* Expression */ }
private static $options = [
'function' => MyClass::myFunction()
];
}
但它让我想到了一个意想不到的错误'(':
PHP Parse错误:语法错误,意外'(',期待']'...
而且这个。哪个是唯一有效的:
class MyClass {
private static function myFunction() { /* Expression */ }
public static function anotherFunction() {
$options = [ 'function' => MyClass::myFunction() ];
}
}
但我需要让同一个类的更多方法可以访问此$options
var,因此它不是解决方案。
我宁愿远离构造函数,因为它只是一个帮助类而且我不想搞乱它的实例和这类事情。
答案 0 :(得分:1)
您可以使用此方法
class MyClass{
private static function myFunction(){ echo __FUNCTION__;}
private static $options = [
'function' => ['MyClass', 'myFunction']
];
public static function test(){
$function = self::$options['function'];
$function();
}
}
MyClass::test();
这可能是因为数组可能是callable。