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

Linda Hamilton
Freigeben: 2024-10-29 19:11:02
Original
527 Leute haben es durchsucht

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

    <code class="php">public $var = array(
      1 => 4,
      2 => (4+1),
    );</code>
    Nach dem Login kopieren
  • Syntaxfehler:

    <code class="php">public $var = 4+1;</code>
    Nach dem Login kopieren

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

Dieser Code gibt Folgendes aus:

4 The value of THREE is 3
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!