请看一下这段代码:
$array = array(
'action' => function () { echo "this works"; }
);
class Test {
public $array = array(
"action" => function () { echo "this doesn't"; }
);
}
第一个函数literal解析正常,但第二个 - 类中的一个 - 触发语法错误:
解析错误:语法错误,意外'功能'(T_FUNCTION)...
有人可以向我解释一下吗?这是一个错误吗?
编辑:这是最新的PHP:5.6.6
答案 0 :(得分:7)
在课堂上它是一个属性!
来自物业的规则:
声明可能包括初始化,但是这个 初始化必须是常量值 - 也就是说,它必须能够 在编译时 评估,不依赖于运行时 信息以便进行评估。
答案 1 :(得分:4)
我没有机会在PHP 5.6.6上测试您的代码,但我认为此代码可以解决您的问题。
class Test{
public $array;
function __construct(){
$this -> array = array(
'action' => function (){
echo 'It works too';
}
);
}
}
$test = new Test();
$test -> array['action']();
答案 2 :(得分:0)
尝试这样,让我知道这是否适合你
<?php
$array = array('action' => function () { echo "this works"; });
class Test {
public $arr;
function __construct() {
$this->arr = array("action" => function () { echo "this works too"; });
}
function getArr(){
var_dump($this->arr);
}
}
var_dump($array);
$obj = new Test();
$obj->getArr();