Dans PHP 7 et ultérieurement, en utilisant la même méthode que le nom de classe que le constructeur sera considéré comme obsolète. Cette utilisation est légale et courante dans les anciennes versions de PHP, mais avec le développement de la langue, afin d'améliorer la cohérence et la maintenabilité, le responsable du PHP ne recommande plus cette méthode d'écriture.
Dans PHP 5 et plus tôt, les développeurs définissent généralement les constructeurs de la même manière que les noms de classe, par exemple:
class MyClass {
function MyClass() {
// Logique du constructeur
}
}
Cependant, depuis PHP 7, cette méthode déclenchera l'avertissement suivant:
Déprécié: les méthodes avec le même nom que leur classe ne seront pas des constructeurs
Cela signifie que pendant que le code est toujours en cours d'exécution, les versions futures peuvent complètement supprimer cette syntaxe, il est donc recommandé de faire des ajustements immédiatement.
Pour résoudre l'avertissement ci-dessus, nous pouvons choisir la méthode suivante en fonction de la situation réelle du projet.
Le moyen le plus direct consiste à modifier le nom du constructeur à la méthode prédéfinie __Construct () de PHP. L'exemple est le suivant:
class MyClass {
function __construct() {
// Logique du constructeur
}
}
Cette méthode fonctionne dans toutes les versions PHP prises en charge et est la pratique standard recommandée.
Si vous devez être compatible avec l'ancien environnement de projet, vous pouvez utiliser la fonction version_compare pour rendre le jugement de la version PHP, afin de sélectionner l'implémentation du constructeur approprié:
class MyClass {
function MyClass() {
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
// PHP 7Logique de la version ci-dessus
} else {
// PHP 7La version suivante de la logique
}
}
}
Cependant, cette solution est plus adaptée à une utilisation dans la maintenance et n'est pas recommandée pour les nouveaux projets.
Un autre moyen non officiel est d'identifier l'objectif du constructeur par l'annotation PHPDOC:
class MyClass {
/**
* MyClass constructor.
*/
function MyClass() {
// Logique du constructeur
}
}
Cette pratique aide à coder la lisibilité, mais n'élimine pas les avertissements de l'interprète PHP et ne s'applique qu'à l'identification interne de l'équipe.
Face à l'invite à partir de dépréciation: méthodes avec le même nom que leur classe ne sera pas des constructeurs , les développeurs doivent choisir les méthodes suivantes en fonction des coûts de compatibilité et de maintenance du projet:
Il est recommandé d'unifier tous les constructeurs du projet au format __Contruct () dès que possible pour améliorer la qualité du code et éviter d'éventuels problèmes d'incompatibilité futurs.