问题要简单得多——您不能使用复杂的表达式来初始化类属性。您可以将其设置为常量值,但不能将其设置为函数调用、函数创建等。
看这里: http: //php.net/manual/en/language.oop5.properties.php
进一步解释 - 此代码不起作用,因为您正在尝试variable
使用匿名函数初始化属性:
<?php
class ExampleClass
{
// fails because of complex expression
public $variable = array(
"example" => function($str) { return str_replace("a", "-", $str); }
);
}
如果您希望该属性保存函数句柄,请按如下方式更改您的代码:
<?php
class ExampleClass
{
// might be left uninitialized as well
public $variable = null;
public function __construct()
{
// now object context is initialized
// so you can perform complex actions on it
$this->variable = array(
"example" => function($str) { return str_replace("a", "-", $str); }
);
}
}