2011-10-28 17 views
10

Soy un n00b en php. Estaba aprendiendo acerca de los parámetros predeterminados, así que hice esta función.¿Por qué PHP no arroja un error cuando paso demasiados parámetros a una función?

function doFoo($name = "johnny"){ 
    echo "Hello $name" . "<br />"; 
} 

Hice estas llamadas

doFoo(); 
doFoo("ted"); 
doFoo("ted", 22); 

Los dos primeros impresa lo que se esperaba, es decir

Hello johnny 
Hello ted 

pero la tercera llamada también impreso

Hello ted 

que estaba esperando una error, después de todo el func se hace para un argumento, mientras que lo estoy llamando con dos argumentos.
¿Por qué no hubo ningún error?

+2

porque en php puede usar este tipo de función: http://it.php.net/func_get_args – dynamic

Respuesta

13

PHP no lanza un error en la sobrecarga de funciones.

+0

De acuerdo con https://bugs.php.net/bug.php?id=13892, es un WONTFIX –

-2

Solo debe imprimir un aviso, pero no hay ningún error. Creo que tiene configurada la creación de informes de error para que los avisos no se muestren en la pantalla.

Intenta pegar esto en la parte superior de su código:

error_reporting(E_ALL | E_STRICT); 
+3

¿quién todavía está votando eso? –

+3

Por lo que puedo ver, esto es incorrecto. Incluso al establecer la configuración más estricta de informes de errores, no habrá avisos. – arvixx

3

porque las funciones PHP admiten una cantidad variable de parámetros.

Cuestiones relacionadas