In Php 7 und später wird die Verwendung der gleichen Methode wie der Klassenname wie der Konstruktor als veraltet angesehen. Diese Verwendung ist in alten Versionen von PHP legal und verbreitet, aber mit der Entwicklung der Sprache empfiehlt der PHP -Beamte diese Schreibmethode nicht mehr.
In PHP 5 und früher definieren Entwickler Konstruktoren normalerweise auf die gleiche Weise wie Klassennamen, zum Beispiel:
class MyClass {
function MyClass() {
// Konstruktorlogik
}
}
Seit Php 7 wird diese Methode jedoch die folgende Warnung auslösen:
Veraltet: Methoden mit demselben Namen wie ihre Klasse sind keine Konstruktoren
Dies bedeutet, dass der Code zwar noch ausgeführt wird, zukünftige Versionen diese Syntax vollständig entfernen können. Es wird daher empfohlen, Anpassungen sofort vorzunehmen.
Um die obige Warnung zu beheben, können wir die folgende Methode gemäß der tatsächlichen Projektsituation auswählen.
Die direkteste Möglichkeit besteht darin, den Konstruktoramen in die vordefinierte __construct () -Methode von PHP zu ändern. Das Beispiel lautet wie folgt:
class MyClass {
function __construct() {
// Konstruktorlogik
}
}
Diese Methode funktioniert in allen unterstützten PHP -Versionen und ist die empfohlene Standardpraxis.
Wenn Sie mit der alten Projektumgebung kompatibel sein müssen, können Sie die Funktion Version_Compare verwenden, um das PHP -Versionsurteil zu fällen, um die entsprechende Konstruktorimplementierung auszuwählen:
class MyClass {
function MyClass() {
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
// PHP 7Logik der obigen Version
} else {
// PHP 7Die folgende Version der Logik
}
}
}
Diese Lösung eignet sich jedoch besser für die Wartung und wird für neue Projekte nicht empfohlen.
Eine weitere inoffizielle Möglichkeit besteht darin, den Zweck des Konstruktors durch die Phpdoc -Annotation zu identifizieren:
class MyClass {
/**
* MyClass constructor.
*/
function MyClass() {
// Konstruktorlogik
}
}
Diese Praxis hilft bei der Lesbarkeit der Code, beseitigt jedoch keine Warnungen aus dem PHP -Interpreter und gilt nur für die interne Identifizierung des Teams.
Angesichts der Eingabeaufforderung von veralteten: Methoden mit demselben Namen wie ihrer Klasse sind keine Konstruktoren . Entwickler sollten die folgenden Methoden basierend auf Projektkompatibilität und Wartungskosten auswählen:
Es wird empfohlen, alle Konstruktoren im Projekt so bald wie möglich in das __construct () -Format zu vereinen, um die Codequalität zu verbessern und mögliche künftige Inkompatibilitätsprobleme zu vermeiden.