Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich statische Variablen mit komplexen Ausdrücken in PHP ordnungsgemäß initialisieren?

Wie kann ich statische Variablen mit komplexen Ausdrücken in PHP ordnungsgemäß initialisieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-20 00:37:03886Durchsuche

How Can I Properly Initialize Static Variables with Complex Expressions in PHP?

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!

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