Посмотрите на этот код, пожалуйста:
$array = array(
'action' => function () { echo "this works"; }
);
class Test {
public $array = array(
"action" => function () { echo "this doesn't"; }
);
}
Первый литерал функции анализируется нормально, но второй — тот, что находится внутри класса — вызывает синтаксическую ошибку:
Ошибка разбора: синтаксическая ошибка, неожиданная «функция» (T_FUNCTION) …
Может кто-нибудь объяснить это мне? Это ошибка?
РЕДАКТИРОВАТЬ: Это последний PHP: 5.6.6
Из класса это собственность!
Правило из свойств:
Декларация может включать инициализацию, но это
инициализация должна быть постоянное значение—то есть он должен быть в состоянии
быть оценивали в время компиляции и должен не зависит от времени выполнения
информация для оценки.
У меня нет возможности протестировать Ваш код на 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']();
Попробуйте вот так, дайте мне знать, если это работает для вас
<?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();