Comprendre l'erreur « La déclaration des méthodes doit être compatible avec les méthodes parent » en PHP
Lorsque vous travaillez avec la programmation orientée objet en PHP, vous peut rencontrer l'erreur "Normes strictes : la déclaration de childClass::customMethod() doit être compatible avec celle de parentClass::customMethod()." Cette erreur indique que la déclaration d'une méthode dans une classe enfant doit s'aligner sur la déclaration de la méthode correspondante dans sa classe parent.
Causes possibles :
L'erreur peut se produire pour deux raisons principales :
-
Inadéquation des arguments : La méthode de la classe enfant a des paramètres d'entrée (arguments) différents par rapport à la méthode parent. Cela inclut les différences dans le nombre, le type ou l'ordre des arguments.
-
Différence de niveau d'accès : Le niveau d'accès (public, privé ou protégé) de la méthode dans la classe enfant n'est pas le même que celui de la méthode parent. Par exemple, une méthode déclarée comme « publique » dans la classe parent ne peut pas être déclarée comme « privée » dans la classe enfant.
Déclaration de méthode compatible :
Pour garantir la compatibilité, la déclaration d'une méthode dans la classe enfant doit correspondre à la déclaration dans la classe parent dans les aspects suivants :
- Paramètres d'entrée (numéro, type, ordre)
- Type de retour
- Niveau d'accès
Documentation et ressources :
- [Manuel PHP officiel : Surcharge de méthodes](https : //www.php.net/manual/en/lingual.oop5.overloading.php)
- [PHPStan : Compatibilité des méthodes de niveau de base](https://phpstan.org/user-guide/rules/methods /basic-method-compatibility)
- [Stack Overflow : Que signifie la "Déclaration de la méthode class::method doit être compatible avec celle de parentClass::method" ?](https://stackoverflow.com /questions/2194559/qu'est-ce-que-la-déclaration-de-méthode-classe-méthode-devrait-être-compatible-avec-cela)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!