Strikter Modus von PHP 5.2: Warum sind abstrakte statische Klassenmethoden nicht zulässig?
In PHP 5.2 kann die Aktivierung strenger Warnungen eine bekannte Warnung auslösen : „Statische Funktion sollte nicht abstrakt sein“. Diese Warnung ist auf eine in PHP 5.2 eingeführte Änderung zurückzuführen, die abstrakte statische Klassenmethoden nicht zulässt.
Der Grund: Ein historischer Überblick
PHP 5.2 verfügte zunächst über keine späten statischen Bindungen. abstrakte statische Funktionen unbrauchbar machen. Da sich das Schlüsselwort self in abstrakten statischen Methoden auf die übergeordnete Klasse und nicht auf die untergeordnete Klasse bezog, für die die Methode aufgerufen wurde, hatten solche Methoden keine praktische Bedeutung. Daher sollte die Warnung potenzielle Codierungsfehler abfangen und verhindern.
Späte statische Bindungen und die fehlerhafte Begründung
In PHP 5.3 wurden späte statische Bindungen eingeführt, die Folgendes ermöglichen Statische Methoden untergeordneter Klassen, die mithilfe des Schlüsselworts static von übergeordneten Methoden aufgerufen werden sollen. Dadurch wurde die technische Barriere beseitigt, die abstrakte statische Methoden unbrauchbar gemacht hatte. Die Warnung blieb jedoch in PHP 5.2 bestehen, basierend auf einem schwachen Argument: Das Offenlegen abstrakter statischer Methoden könnte zu fehlerhaften öffentlichen Methoden führen.
Eine falsche Wahrnehmung
Die Begründung dafür Die Warnung war fehlerhaft. Abstrakte statische Methoden könnten mit späten statischen Bindungen koexistieren und einen gültigen Anwendungsfall für den Aufruf statischer Methoden untergeordneter Klassen aus übergeordneten Methoden bereitstellen.
Verwirrung und eine ungenaue Antwort
A Der PHP-Fehlerbericht, der die Entfernung der Warnung aufgrund der Hinzufügung verspäteter statischer Bindungen forderte, erhielt eine abweisende Antwort von Rasmus Lerdorf. Er gab fälschlicherweise an, dass abstrakte statische Methoden mit späten statischen Bindungen funktionsfähig seien, was falsch war, da sie immer noch die Warnung auslösten. Diese Verwirrung und Unklarheit führten dazu, dass die Warnung weiterhin angezeigt wurde.
Die Lösung in PHP 7
Glücklicherweise hat PHP 7 dieses Problem endlich behoben und diese Warnung neu klassifiziert auf eine bloße Mitteilung. Mit der Einführung von PHP 7 werden abstrakte statische Methoden vollständig unterstützt und können sicher verwendet werden, ohne dass Warnungen ausgelöst werden.
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