从php中的另一个私有数组调用私有数组

时间:2011-04-25 00:35:59

标签: php arrays private

我不明白为什么这段代码不起作用:

<?php
class Test {

    private $BIG = array(
        'a' => 'A',
        'b' => 'B',
        'c' => 'C'
    );

    private $arr2 = array(
        $this->BIG['a'],
        $this->BIG['b'],
        'something'
    );

    public function getArr2(){
        return $this->arr2;
    }


}

$t = new Test();
print_r($t->getArr2());

?>

我收到此错误:

  

解析错误:语法错误,意外   T_VARIABLE,期待')'in   /home/web/te/test.php   在第11行

3 个答案:

答案 0 :(得分:2)

您无法在类成员定义中组合变量。您只能使用本机类型和常量:

private $arr = array('a', 'b');
private $obj = new stdClass(); // error
private $obj = (object)array(); // error
private $num = 4;
private $a = 1;
private $b = 2;
private $c = $this->a + .... // error

如果要合并或计算,请在__construct中执行此操作:

private $a = 1;
private $b = 2;
private $c;

function __construct() {
  $this->c = $this->a + $this->b;
}

答案 1 :(得分:1)

声明属性时,不能引用$ this。

答案 2 :(得分:1)

来自PHP Documentation

  

[财产]声明可能包括   初始化,但是这个   初始化必须是常量   价值 - 也就是说,它必须能够   在编译时评估,不得   依赖于运行时信息   为了评估

因此,在构造函数中执行类似的操作:

class Test {

    private $BIG = array(
        'a' => 'A',
        'b' => 'B',
        'c' => 'C'
    );

    private $arr2;

    public function __construct()
    {
        $this->arr2 = array(
            $this->BIG['a'],
            $this->BIG['b'],
            'something'
        );
    }

    public function getArr2(){
        return $this->arr2;
    }
}