为什么我不能将$_SERVER['DOCUMENT_ROOT']
设置为属性?
参见示例代码
class foo
{
private $path = $_SERVER['DOCUMENT_ROOT']; // generates error
private $blah;
public function __construct()
{
//code
}
public function setBla($bla)
{
$this->blah = $bla;
}
}
答案 0 :(得分:5)
在声明初始化时不能使用其他变量。试试这个:
class foo
{
private $path;
private $blah;
public function __construct()
{
$this->$path = $_SERVER['DOCUMENT_ROOT'];
//code
}
public function setBla($bla)
{
$this->blah = $bla;
}
}
顺便说一句,你确定私人是一个合适的选择,经常受到保护是可取的。
答案 1 :(得分:2)
Class properties只能使用常量值进行初始化:
[...]声明可能包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
所以你需要在构造函数中初始化它们,比如mathroc说的。