为什么我不能将$ _SERVER ['DOCUMENT_ROOT']设置为属性?

时间:2010-03-01 13:46:04

标签: php oop attributes

为什么我不能将$_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;

  }
}

2 个答案:

答案 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说的。