2016-06-23 12 views
-1

Ich habe nur PHP 5.4 auf meinem aktuellen Hoster und ich bekomme immer Fehler mit Klassenkonstanten in meinem Code. Anscheinend ist es nicht erlaubt, Array-Konstanten zu definieren. Ich habe die Konstante in eine statische Variable geändert, damit sie funktioniert. Jetzt bekomme ich diesen Syntaxfehler:String-Verkettung mit Konstanten

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

Ich versuche, Zeichenfolgen zu definieren, die aus verketteten Konstanten bestehen.

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

ist das möglich oder müssen alle Konstanten jetzt statische Variablen sein?

+0

Vielleicht eine Frage der Präferenz des Operators, haben Sie versucht, Klammern um die Verkettung zu setzen? Wie in '[KEY_ONE => (" string ". MyClass :: CONSTANT." String ")]'. – syck

Antwort

0

wenn Sie machen Array wie folgt versuchen:

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

Dies funktioniert nicht beim Definieren einer Eigenschaft. – jeroen

2

In der Variablendeklaration Sie keine Operationen tun. Weder Verkettung noch mathematische Operationen.

Sie können es in Construct-Methode tun;

public static $arr = []; 

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

Oder eine Art von 'init()' Methode, wenn Sie ein Objekt nicht instanziieren wollen. – jeroen