Ce message signifie qu'il existe certains appels de méthodes possibles qui peuvent échouer au moment de l'exécution. Supposons que vous ayez
class A { public function foo($a = 1) {;}}
class B extends A { public function foo($a) {;}}
function bar(A $a) {$a->foo();}
Le compilateur ne vérifie que l'a- $ d'appel> foo() par rapport aux exigences de A :: foo() qui ne nécessite aucun paramètre. $ a peut cependant être un objet de classe B qui nécessite un paramètre et donc l'appel échouerait à l'exécution.
Cela peut cependant jamais échouer et ne déclenche pas l'erreur
class A { public function foo($a) {;}}
class B extends A { public function foo($a = 1) {;}}
function bar(A $a) {$a->foo();}
donc pas de méthode peut avoir des paramètres plus nécessaires que sa méthode mère.
Le même message est également généré lorsque les indications de type ne correspondent pas, mais dans ce cas PHP est encore plus restrictif. Cela donne une erreur:
class A { public function foo(StdClass $a) {;}}
class B extends A { public function foo($a) {;}}
tout comme ceci:
class A { public function foo($a) {;}}
class B extends A { public function foo(StdClass $a) {;}}
qui semble plus restrictive qu'il doit être et je suppose est dû à internals.
Les différences de visibilité provoquent une erreur différente, mais pour la même raison fondamentale. Aucune méthode ne peut être moins visible que sa méthode parente.
notJim l'a tout à fait raison. @ waiwai933, si vous pouviez poster les en-têtes (juste la première ligne: 'function customMethod (...)') pour chaque fonction nous pourrions vous dire le problème spécifique – nickf
Plus de détails sur le message d'erreur et les implications PHP: https: //bugs.php.net/bug.php?id=46851 – hakre
duplicata possible de [Strict Standards: Déclaration de '' devrait être compatible avec ''] (http://stackoverflow.com/questions/17234259/strict-standards -declaration-of-should-be-compatible-with) –