PHP类中的函数文字

时间:2015-03-03 13:12:28

标签: php function oop literals

请看一下这段代码:

$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

3 个答案:

答案 0 :(得分:7)

在课堂上它是一个属性!

来自物业的规则:

  

声明可能包括初始化,但是这个   初始化必须是常量值 - 也就是说,它必须能够   在编译时 评估不依赖于运行时   信息以便进行评估。

http://php.net/manual/en/language.oop5.properties.php

答案 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();