Почему я не могу установить $ _SERVER ['DOCUMENT_ROOT'] в качестве атрибута? - PullRequest
1 голос
/ 01 марта 2010

Почему я не могу установить $_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 ]

5 голосов
/ 01 марта 2010

Вы не можете использовать другую переменную при инициализации в объявлении. попробуйте это:

class foo
{
private $path;
private $blah;

public function __construct()
{
$this->$path = $_SERVER['DOCUMENT_ROOT'];
//code
}

  public function setBla($bla)
  {
   $this->blah = $bla;

  }
}

кстати, вы уверены, что частный является подходящим выбором, часто защищенным является предпочтительным.

2 голосов
/ 01 марта 2010

Свойства класса можно инициализировать только постоянными значениями:

[…] объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.

Так что вам нужно инициализировать их в конструкторе, как сказал mathroc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...