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

Linda Hamilton
Freigeben: 2024-11-20 00:37:03
Original
817 Leute haben es durchsucht

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),  
);
Nach dem Login kopieren

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
Nach dem Login kopieren

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(…);
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage