2016-06-23 3 views
-1

У меня есть только PHP 5.4, доступный у моего текущего хостера, и я всегда получаю ошибки с константами класса в моем коде. По-видимому, не разрешено определять константы массива. Я изменил константу на статическую переменную, чтобы она работала. Теперь я получаю эту синтаксическую ошибку:конкатенация строк с константами

syntax error, unexpected '.', expecting ']' 

Я пытаюсь определить строки, которые состоят из конкатенированных констант.

public static $arr = [KEY_ONE => "string " . MyClass::CONSTANT . " string"] 

Это возможно или все константы должны быть статическими переменными сейчас?

+0

Возможно, вопрос о предпочтении оператора, вы пытались помещать круглые скобки вокруг конкатенации? Как в '[KEY_ONE => (" string ". MyClass :: CONSTANT." String ")]'. – syck

ответ

0

если вы делаете массив попробовать, как это:

public static $arr = array("KEY_ONE" => "string " . MyClass::CONSTANT . " string"); 
+0

Это не будет работать при определении свойства. – jeroen

2

В объявлении переменной вы не можете делать операции. Ни конкатенация, ни математические операции.

Вы можете сделать это в методе построения;

public static $arr = []; 

public function __construct(){ 
    self::$arr = [KEY_ONE => "string " . MyClass::CONSTANT . " string"]; 
} 
+1

Или какой-то метод 'init()', если вы не хотите создавать экземпляр объекта. – jeroen

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