PHP класс $ _SERVER Переменная свойство - PullRequest
4 голосов
/ 08 августа 2011

Я занимаюсь разработкой класса, и у меня есть такая структура:

class userInfo {
    public $interval        = 60;
    public $av_langs        = null;

    public $ui_ip           = $_SERVER['REMOTE_ADDR'];
    public $ui_user_agent   = $_SERVER['HTTP_USER_AGENT'];

    public $ui_lang         = null;
    public $ui_country      = null;

    // non-relevant code removed
}

Но при выполнении скрипта я получаю эту ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданный T_VARIABLE в D: \ web \ www \ poll \ get_user_info \ get_user_info.php в строке 12

Когда я изменил 2 $ _SERVER vars на простые строки, ошибка исчезла.

Так в чем же проблема с $ _SERVER в объявлении свойств класса?

Спасибо

Ответы [ 3 ]

11 голосов
/ 08 августа 2011

Используйте этот код в качестве руководства:

public function __construct() {
    $this->ui_ip = $_SERVER['REMOTE_ADDR'];
    $this->ui_user_agent = $_SERVER['HTTP_USER_AGENT'];
}
5 голосов
/ 08 августа 2011

Свойство может быть объявлено только со значением, а не с выражением.
Вы можете создать метод __construct (), где вы можете инициализировать свойства любым способом.

3 голосов
/ 08 августа 2011

Так в чем же проблема с $ _SERVER в объявлении свойств класса?

Вы не можете задавать свойства класса с помощью переменных или вызовов функций.

Вот несколько подробностей о том, почему: Почему атрибуты PHP не поддерживают функции?

Суть в том, что это просто невозможно.

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