Heim >Backend-Entwicklung >PHP-Tutorial >Warum verursachen mathematische Ausdrücke Syntaxfehler in PHP-Klasseneigenschaftendeklarationen?

Warum verursachen mathematische Ausdrücke Syntaxfehler in PHP-Klasseneigenschaftendeklarationen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 19:11:02630Durchsuche

Why Do Mathematical Expressions Cause Syntax Errors in PHP Class Property Declarations?

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!

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