Position actuelle: Accueil> Derniers articles> Solution à un avertissement obsolète causé par des problèmes de dénomination des constructeurs en PHP

Solution à un avertissement obsolète causé par des problèmes de dénomination des constructeurs en PHP

M66 2025-08-07

Analyse de l'avertissement obsolète causé par la dénomination du constructeur PHP

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.

Causes des avertissements

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.

Solutions recommandées

Pour résoudre l'avertissement ci-dessus, nous pouvons choisir la méthode suivante en fonction de la situation réelle du projet.

Utilisez le constructeur standard __Construct ()

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.

Jugement conditionnel basé sur la version PHP

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.

Utilisez l'annotation phpdoc pour illustrer le constructeur

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.

Résumer

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:

  • Renommez le constructeur à __Contruct () comme la meilleure solution
  • La logique de compatibilité est réalisée via le jugement de la version PHP
  • Utilisez un commentaire PHPDOC Aide à expliquer les constructeurs hérités

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.