Heim >Backend-Entwicklung >PHP-Tutorial >Warum waren statische abstrakte Methoden in PHP 5.2 nicht zulässig und was hat sich in späteren Versionen geändert?
Warum statische abstrakte Methoden in PHP 5.2 nicht zulässig waren
In PHP 5.2 führte die Einführung strenger Warnungen zu einer Flut von Standardwarnungen im Zusammenhang um statische Klassenmethoden zu abstrahieren. Diese Änderung löste die Frage aus: Warum sollte PHP keine abstrakten statischen Funktionen zulassen?
Der Grund für das Verbot
Anfänglich war das Verbot abstrakter statischer Methoden in PHP 5.2 war auf das Fehlen später statischer Bindungen zurückzuführen. Zu diesem Zeitpunkt verhielt sich Code wie der folgende nicht wie erwartet:
abstract class ParentClass { static function foo() { echo "I'm gonna do bar()"; self::bar(); } abstract static function bar(); } class ChildClass extends ParentClass { static function bar() { echo "Hello, World!"; } } ChildClass::foo();
Selbst wenn er als Methode der untergeordneten Klasse aufgerufen wurde, verwies der Aufruf self::bar() auf die Methode bar() der ParentClass. Ohne späte statische Bindungen machte diese Einschränkung abstrakte statische Methoden im Wesentlichen nutzlos.
Die Hinzufügung später statischer Bindungen
Mit der Einführung von PHP 5.3 erlaubte das Schlüsselwort static Methoden in übergeordneten Klassen, um statische Methoden in untergeordneten Klassen aufzurufen. Dies öffnete die Tür für einen sinnvollen Einsatz abstrakter statischer Methoden. Späte statische Bindungen beseitigten die vorherige Einschränkung und machten statische abstrakte Methoden möglich.
Die fehlerhafte Begründung
Trotz der Einführung später statischer Bindungen blieb die Warnung vor abstrakten statischen Funktionen bestehen . Das vorgebrachte Argument war, dass der Aufruf von ParentClass::foo() eine defekte ParentClass::bar()-Methode offenlegen könnte. Dieses Problem konnte jedoch gelöst werden, indem sichergestellt wurde, dass abstrakte Klassen nicht instanziiert wurden.
Die fehlerhafte Entscheidung
Trotz der fehlerhaften Begründung blieb die Warnung in PHP bestehen. Ein PHP-Fehlerbericht, der seine Entfernung forderte, wurde fälschlicherweise als „falsch“ geschlossen. Diese fehlerhafte Entscheidung hat dazu geführt, dass die Warnung bestehen bleibt, sehr zum Frust der Entwickler.
Die Zukunft statischer abstrakter Methoden
Glücklicherweise wird die Warnung entfernt in PHP 7. Diese Änderung wird PHP an moderne objektorientierte Programmierpraktiken anpassen und es Entwicklern ermöglichen, abstrakte statische Methoden ohne unnötige Warnungen zu verwenden. Entwickler müssen sich nicht länger mit der Verwirrung herumschlagen, die durch die fehlerhafte Entscheidung in PHP 5.2 verursacht wurde.
Das obige ist der detaillierte Inhalt vonWarum waren statische abstrakte Methoden in PHP 5.2 nicht zulässig und was hat sich in späteren Versionen geändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!