„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können PHP-Klasseneigenschaften mit nicht konstanten Ausdrücken initialisiert werden?

Können PHP-Klasseneigenschaften mit nicht konstanten Ausdrücken initialisiert werden?

Veröffentlicht am 10.11.2024
Durchsuche:341

Can PHP Class Properties Be Initialized with Non-Constant Expressions?

Rätsel bei der PHP-Klasseninitialisierung: Ausdrücke in Eigenschaftsdeklarationen auswerten

Die PHP-Dokumentation schreibt vor, dass Klasseneigenschaftsdeklarationen mit konstanten Werten initialisiert werden können. Beim Versuch, Arrays mit nicht konstanten Ausdrücken zu initialisieren, sind Benutzer jedoch auf Syntaxfehler gestoßen.

Syntaxfehlerbeispiel:

public $var = array(
    1 => 4,
    2 => (4 1), // Syntax error
);

Grundlegendes Problem:

Der Fehler ist auf eine Einschränkung in PHP 5.5 und früheren Versionen zurückzuführen, bei der in Eigenschaftsdeklarationen nur konstante Werte zulässig waren. Dazu gehören Werte, die zur Kompilierzeit ausgewertet werden können. Die Verwendung berechneter Ausdrücke wie „4 1“ war jedoch verboten.

Auflösung in PHP 5.6:

Diese Einschränkung wurde in PHP 5.6 mit der Einführung aufgehoben von konstanten Skalarausdrücken. Diese Funktion ermöglicht die folgende Syntax:

public $var = array(
    1 => 4,
    2 => (4 1),
);

public $var = 4 1;

Fazit:

Der in früheren PHP-Versionen aufgetretene Syntaxfehler beim Initialisieren von Klasseneigenschaften mit nicht konstanten Ausdrücken wurde in PHP behoben 5.6 und spätere Versionen. Mit konstanten Skalarausdrücken können Entwickler jetzt Eigenschaften mit berechneten Werten initialisieren, die zur Kompilierungszeit ausgewertet werden können.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3