Initialisierung statischer Variablen in PHP
PHP stellt eine Herausforderung bei der Initialisierung statischer Variablen dar, da es nicht triviale Ausdrücke innerhalb von Initialisierern nicht auswerten kann . Betrachten Sie den folgenden Code:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), 'end' => mktime( 0, 0, 0, 8, 2, 2009), 'close' => mktime(23, 59, 59, 7, 20, 2009), 'early' => mktime( 0, 0, 0, 3, 19, 2009), );
Dieser Code löst einen Analysefehler aus, da PHP nach dem Zuweisungsoperator ein „)“ erwartet, wie in der folgenden Fehlermeldung zu sehen ist:
Parse error: syntax error, unexpected '(', expecting ')' in /home/user/Sites/site/registration/inc/registration.class.inc on line 19
To Um diese Einschränkung zu umgehen, können wir alternative Ansätze anwenden:
1. Verzögerte Initialisierung
Nachdem wir die Klasse definiert haben, können wir die statische Variable explizit mithilfe eines separaten Codeblocks initialisieren:
class Foo { static $bar; } Foo::$bar = array(…);
2. Statische Initialisierungsmethode
Wir können eine statische Methode innerhalb der Klasse definieren, um die Variable zu initialisieren:
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
Hinweis: PHP 5.6 führte die Unterstützung für bestimmte Ausdrücke ein in statischen Variableninitialisierern, diese Funktionalität ist jedoch eingeschränkt.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Variablen mit komplexen Ausdrücken in PHP ordnungsgemäß initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!