【发布时间】:2017-12-02 07:20:38
【问题描述】:
我正在尝试将一些验证函数存储在静态配置数组中。将函数存储在数组中似乎可行,但是,当我将相同的代码放入类中时,它会失败。有谁知道怎么回事?
$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
$functions['function1']("hello world");
// Works
//----------
class A {
public static $functions = array(
'function1' => function($echo) {
echo $echo;
}
);
}
A::$functions['function1']("hello world");
//Parse error: syntax error, unexpected 'function' (T_FUNCTION)
【问题讨论】:
-
在 Windows 或 Linux 上运行代码时出现相同的错误。 Windows 上的 PHP 版本 5.6.30 Linux 上的 PHP 版本 5.5.9
-
PHP 中不允许这样做。您只能将基本值分配给初始定义中的类变量。不过,您可以从函数中为其设置闭包,例如在
A::prepare()方法中,设置self::$functions['function1'] = function($echo) { echo $echo; };。 -
类变量必须初始化为 CONSTANT 表达式,至少在 5.x 中。
标签: php arrays closures class-properties