可能重复:
Workaround for basic syntax not being parsed
Why don't PHP attributes allow functions?
我正在
解析错误:语法错误,第87行/home/codemonkey/dev/broadnet/bito.api2/broadnet/resources/broadmapresource.php中的意外T_FUNCTION
从这段代码:
private $debugFunctions = array(
"testing" => function() // Line 87
{
return "I'm a test function!";
},
"foo" => function()
{
return "bar";
}
);
我的印象是我可以在任何可以使用$variables
的地方使用匿名PHP函数。这是一个例外,还是我做错了什么?
我正在使用PHP 5.3.9
答案 0 :(得分:3)
您不能使用class属性执行此操作,属性初始化必须是常量值。
初始化必须是一个常量值 - 也就是说,它必须能够 在编译时进行评估,不得依赖于运行时 信息以便进行评估。
答案 1 :(得分:3)
使用构造函数:
class TestClass {
private $debugFunctions;
public function __construct() {
$this->debugFunctions = array(
"testing" => function()
{
return "I'm a test function!";
},
"foo" => function()
{
return "bar";
}
);
}
}
答案 2 :(得分:0)
不是那样的,请看create_function。 它在当前作用域中创建一个新函数并返回函数名称。
private $debugFunctions = array(
"testing" => create_function('', 'return "I\'m a test function!";'),
"foo" => create_function('', 'return "bar";');
);
不确定上述示例是否有效。我没时间测试它。
另请注意,使用create_function会显着降低应用程序的速度,具体取决于您使用它的频率。
答案 3 :(得分:0)
你可以做到。
只需在构造函数中初始化它:
function __construct() {
$debugFunctions = array(
"testing" => function() // Line 87
{
return "I'm a test function!";
},
"foo" => function()
{
return "bar";
}
);
}