我不明白为什么这段代码不起作用:
<?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行
答案 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)
[财产]声明可能包括 初始化,但是这个 初始化必须是常量 价值 - 也就是说,它必须能够 在编译时评估,不得 依赖于运行时信息 为了评估。
因此,在构造函数中执行类似的操作:
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;
}
}