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!