Problem:
Beim Initialisieren statischer Variablen in PHP tritt ein Fehler auf Code mit der Syntax private static $dates = array(...);. Insbesondere erhalten Sie einen „Syntaxfehler“ im Zusammenhang mit unerwarteten Klammern.
Antwort:
In PHP können komplexe Ausdrücke nicht direkt in statischen Variableninitialisierern verwendet werden. Hier sind zwei Methoden, um diese Einschränkung zu umgehen:
Methode 1: Klasseninitialisierungscode verwenden
Nachdem Sie die Klasse definiert haben, fügen Sie den folgenden Code hinzu:
class Foo { static $bar; } Foo::$bar = array(...);
Methode 2: Verwenden einer statischen Initialisierungsmethode
Definieren Sie eine statische Initialisierungsmethode und rufen Sie sie manuell auf:
class Foo { private static $bar; static function init() { self::$bar = array(...); } } Foo::init();
PHP 5.6 :
In PHP 5.6 und höher können Sie begrenzte Ausdrücke in statischen Variableninitialisierern verwenden. Für komplexe Ausdrücke können die oben genannten Methoden jedoch dennoch erforderlich sein. Für abstrakte Klassen kann die folgende Syntax verwendet werden:
abstract class Foo{ private static function bar(){ static $bar = null; if ($bar == null) bar = array(...); return $bar; } /* use where necessary */ self::bar(); }
Das obige ist der detaillierte Inhalt vonWie initialisiere ich statische Variablen in PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!