Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich komplexe statische Variablen in PHP richtig initialisieren?
Statische Variablen in PHP initialisieren
Beim Initialisieren statischer Variablen in PHP können Syntaxfehler mit nicht trivialen Ausdrücken im Initialisierer auftreten. wie im Codeausschnitt zu sehen ist unten:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), // Start date 'end' => mktime( 0, 0, 0, 8, 2, 2009), // End date 'close' => mktime(23, 59, 59, 7, 20, 2009), // Date when registration closes 'early' => mktime( 0, 0, 0, 3, 19, 2009), // Date when early bird discount ends );
Problemumgehung:
Eine Lösung besteht darin, komplexe Ausdrücke im Initialisierer zu vermeiden und die Werte stattdessen nach der Definition der Klasse zuzuweisen:
class Foo { static $bar; } Foo::$bar = array(…);
Eine andere Möglichkeit besteht darin, eine statische Funktion zum Initialisieren der Variablen zu verwenden:
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
PHP 5.6 Verbesserung:
PHP 5.6 unterstützt einige Ausdrücke in statischen Variableninitialisierern. Sie können beispielsweise eine abstrakte Klasse mit einer privaten statischen Funktion definieren, um die Variable zu initialisieren:
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 kann ich komplexe statische Variablen in PHP richtig initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!