2013-02-22 3 views
2

У меня есть эта статическая переменная, которую я определяю, но я получаю ошибку в моем коде:Статическая переменная проблема

..unexpected '$ _SERVER' (T_VARIABLE) в ...

class Constants { 
     const ACCOUNTTYPE_SUPER_ADMIN = 1; 
     const ACCOUNTTYPE_COMPANY_ADMIN = 2; 
     const ACCOUNTTYPE_AREA_ADMIN = 3; 
     const ACCOUNTTYPE_END_USER  = 4; 

     const SAVETYPE_NEW    = 0; 
     const SAVETYPE_EDIT    = 1; 

     const LICENSE_VALIDITY_YEARS = 1; 
     const LICENSE_VALIDITY_LEFT_MAX = 12; 

     public static $template_path = $_SERVER['DOCUMENT_ROOT'] . '/../_html/'; 
} 
+0

Это не проблема статической переменной. Кажется невозможным сделать это для * любой * переменной - возможно, по причинам, сходным с [Почему атрибуты PHP не разрешают функции?] (Http://stackoverflow.com/q/3960323) –

+0

Задайте значение переменной, вы может только в методе – Winston

+0

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

ответ

3

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

class Constants { 
    ... 

    public static $template_path; 
} 

Constants::$template_path = $_SERVER['DOCUMENT_ROOT'] . '/../_html/'; 
+0

Большое спасибо. Жаль, что вы не можете сделать это, как я, я имею в виду, что я не использую никаких функций или таких? – silkfire

+1

Рад помочь ... Я столкнулся с той же проблемой, и мне пришлось ее обойти, как показано в моем примере ... не так чисто, как хотелось бы, но это делает работу ... К сожалению, PHP не позволяет объявлять с нестационарными значениями, как мы желаем ... :) – Frhay

2

Вы можете назначать прямые значения только при определении членов класса.

Но вы можете создать метод init(), который изменит значение члена шаблона шаблона.

public static function init(){ self::$template_path = $_SERVER['DOCUMENT_ROOT'] . '/../_html/'; } 

и запускать его при первом использовании класса или его экземпляре.

0

вы можете использовать статическую функцию

class Constants { 
    // ... 
    public static function getTemplatePath() 
    { 
     return $_SERVER['DOCUMENT_ROOT'] . '/../_html/'; 
    } 
} 

и может быть использован как

Constants::getTemplatePath(); 
Смежные вопросы