In PHP-Klasseneigenschaftendeklarationen zulässige Ausdrücke
Die PHP-Dokumentation schlägt vor, dass Eigenschaftsdeklarationen in Klassen mit konstanten Werten initialisiert werden können, außer zur Laufzeit Information. Bestimmte Initialisierungen von Arrays und mathematischen Ausdrücken scheinen jedoch Syntaxfehler zu verursachen.
Initialisierungen mit einfachen Ausdrücken
Gemäß der Dokumentation sollten einfache Ausdrücke akzeptiert werden. Hier untersuchen wir drei Variationen von Arrays und mathematischen Ausdrücken:
Akzeptiert:
<code class="php">public $var = array( 1 => 4, 2 => 5, );</code>
Syntaxfehler:
<code class="php">public $var = array( 1 => 4, 2 => (4+1), );</code>
Syntaxfehler:
<code class="php">public $var = 4+1;</code>
Das erste Beispiel initialisiert eine Array mit numerischen Werten und wird akzeptiert. Allerdings führen sowohl das zweite als auch das dritte Beispiel, bei denen mathematische Ausdrücke verwendet werden, zu Syntaxfehlern. Dies deutet darauf hin, dass die Einschränkung über die Array-Syntax hinausgeht und alle berechneten Ausdrücke umfasst.
Konstante Skalarausdrücke in PHP 5.6
Im Gegensatz zu den zuvor beschriebenen Einschränkungen führt PHP 5.6 Konstanten ein Skalare Ausdrücke. Diese neue Funktion ermöglicht skalare Ausdrücke mit numerischen und String-Literalen und Konstanten in Kontexten, in denen bisher statische Werte erforderlich waren, wie z. B. Konstanten- und Eigenschaftsdeklarationen.
<code class="php">class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; public function f($a = ONE + self::THREE) { return $a; } } echo (new C)->f()."\n"; echo C::SENTENCE;</code>
Dieser Code gibt Folgendes aus:
4 The value of THREE is 3
Daher gelten die anfänglichen Einschränkungen für die Initialisierung von Klasseneigenschaften in PHP 5.6 und späteren Versionen nicht mehr.
Das obige ist der detaillierte Inhalt vonWarum verursachen mathematische Ausdrücke Syntaxfehler in PHP-Klasseneigenschaftendeklarationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!