Este mensaje significa que hay ciertas llamadas a métodos posibles que pueden fallar en el tiempo de ejecución. Suponga que tiene
class A { public function foo($a = 1) {;}}
class B extends A { public function foo($a) {;}}
function bar(A $a) {$a->foo();}
El compilador sólo comprueba la llamada $ a-> foo() en contra de las exigencias de A :: foo(), que no requiere ningún parámetro. Sin embargo, $ a puede ser un objeto de la clase B que requiere un parámetro y, por lo tanto, la llamada fallará en el tiempo de ejecución.
Sin embargo, esto nunca puede fallar y no provocar el error
class A { public function foo($a) {;}}
class B extends A { public function foo($a = 1) {;}}
function bar(A $a) {$a->foo();}
Así que ningún método puede tener más parámetros requeridos que su método de los padres.
El mismo mensaje también se genera cuando las sugerencias de tipo no coinciden, pero en este caso PHP es aún más restrictivo. Esto da un error:
class A { public function foo(StdClass $a) {;}}
class B extends A { public function foo($a) {;}}
que hace esto:
class A { public function foo($a) {;}}
class B extends A { public function foo(StdClass $a) {;}}
que parece más restrictiva de lo que debe ser y supongo que se debe a componentes internos.
Las diferencias de visibilidad provocan un error diferente, pero por el mismo motivo básico. Ningún método puede ser menos visible que su método principal.
notJim lo tiene exactamente. @ waiwai933, si pudieras publicar los encabezados (solo la primera línea: 'function customMethod (...)') para cada función, podríamos contarte el problema específico – nickf
Más detalles sobre el mensaje de error y las implicaciones del tiempo de compilación de PHP: https: //bugs.php.net/bug.php?id=46851 – hakre
posible duplicado de [Normas estrictas: La declaración de '' debería ser compatible con ''] (http://stackoverflow.com/questions/17234259/strict-standards -declaration-of-should-be-compatible-with) –