Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich komplexe statische Variablen in PHP richtig initialisieren?

Wie kann ich komplexe statische Variablen in PHP richtig initialisieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 17:44:11758Durchsuche

How Can I Properly Initialize Complex Static Variables in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn