2010-10-14 2 views
1

Я получаю ошибку синтаксического разбора на линиях с константой (РАЗВЕРТЫВАНИЕ). Почему теперь это разрешено, или я чего-то не хватает.Переменные класса PHP с константами

Ошибка синтаксического анализа: ошибка разбора, ожидая ` ')'» в

class UploadComponent extends Object { 

    private $config = array(
     'accessKey' => 'XXXX', 
     'secretKey' => 'XXXX', 

     'images' => array(
      'bucket' => DEPLOYMENT.'-files/images', 
      'dns' => false 
     ), 

     'files' => array(
      'bucket' => DEPLOYMENT.'-files/files', 
      'dns' => false 
     ), 

     'assets' => array(
      'bucket' => DEPLOYMENT.'-files/assets', 
      'dns' => false 
     ) 
    ); 
    .... 
} 
+0

* (sidenote) * В любом случае вы не хотите иметь зависимость от глобальной константы. – Gordon

+0

где вы определяете «РАЗВЕРТЫВАНИЕ»? – pleasedontbelong

+0

@ Гордон почему нет? @pleasedontbelong действительно? В чем смысл вашего комментария. – Lizard

ответ

7

Вы не можете использовать переменные при определении класса вары. Инициализируйте свой массив внутри конструктора:

class UploadComponent extends Object { 

    private $config; 

    function __construct() { 
     $this->config = array(
      'accessKey' => 'XXXX', 
      'secretKey' => 'XXXX', 

      'images' => array(
       'bucket' => DEPLOYMENT.'-files/images', 
       'dns' => false 
      ), 

      'files' => array(
       'bucket' => DEPLOYMENT.'-files/files', 
       'dns' => false 
      ), 

      'assets' => array(
       'bucket' => DEPLOYMENT.'-files/assets', 
       'dns' => false 
      ) 
     ); 
    } 
} 
5

Причина в том, что константы могут быть определены динамически. Поэтому их содержимое известно только во время выполнения, а не во время компиляции.

Смежные вопросы