Parece (PHP 5.3) que si está anulando un método de clase, está bien que pueda agregar parámetros adicionales, siempre y cuando tengan valores predeterminados.adición de parámetros al método reemplazado Observación E_STRICT
Por ejemplo, considere la clase:
class test1 {
public function stuff() {
echo "Hi";
}
}
La siguiente clase extiende "test1" y producirá una advertencia E_STRICT.
class test2 extends test1 {
public function stuff($name) {
echo "Hi $name";
}
}
Pero, lo siguiente no produce una advertencia E_STRICT.
class test3 extends test1 {
public function stuff($name = "") {
echo "Hi $name";
}
}
Mientras clase "test3" no produce una advertencia E_STRICT, he tenido la impresión de que PHP no permite firmas de los métodos que sean sobrecargados anulados. Entonces, tengo que preguntar. ¿Es mi observación un error/defecto o realmente correcto comportamiento previsto?
Además, si un parámetro predeterminado argumento está bien, ¿por qué es un parámetro argumento no predeterminado no está bien?
tengo error_reporting (E_ALL) establecido y no puedo reproducir el erorr de E_STRICT. ¿Puedes publicar el error que estás viendo? Además, este no es un caso de 'sobrecarga', es 'sobreescritura'. – helloandre
@helloandre, E_STRICT no incluido en E_ALL. Para activar las notificaciones de E_STRICT, establezca 'error_reporting (E_ALL | E_STRICT);' –
@helloandre y E_STRICT no se genera en este caso :) –