Take a look at this code, please:
$array = array(
\'action\' => function () { echo \"this works\"; }
);
class Test {
public $array = array(
From the class it's a property !
Rule from properties :
Declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.
http://php.net/manual/en/language.oop5.properties.php
Try it like this, let me know if this works for you
<?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();
I dont have chance to test Your code on PHP 5.6.6, but I think this code resolve Your problem.
class Test{
public $array;
function __construct(){
$this -> array = array(
'action' => function (){
echo 'It works too';
}
);
}
}
$test = new Test();
$test -> array['action']();