„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 > Warum hat PHP 5.2 abstrakte statische Klassenmethoden verboten?

Warum hat PHP 5.2 abstrakte statische Klassenmethoden verboten?

Veröffentlicht am 14.11.2024
Durchsuche:416

Why Did PHP 5.2 Disallow Abstract Static Class Methods?

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.

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