2011-10-28 8 views
10

Sono un n00b su php. Stavo imparando i Parametri di Default, quindi ho creato questa funzione.Perché PHP non lancia un errore quando passo troppi parametri a una funzione?

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

ho fatto queste chiamate

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

I primi due stampata cosa ci si aspettava cioè

Hello johnny 
Hello ted 

ma la terza chiamata anche stampato

Hello ted 

mi aspettavo un errore, dopo tutto il func viene fatto per un argomento mentre io lo chiamo con due argomenti.
Perché non c'è stato nessun errore?

+2

perché in php è possibile utilizzare questo tipo di funzione: http://it.php.net/func_get_args – dynamic

risposta

13

PHP non genera un errore di sovraccarico funzione.

+0

Secondo https://bugs.php.net/bug.php?id=13892, è un WONTFIX –

-2

Dovrebbe essere stampato solo un avviso, ma nessun errore. Penso che tu abbia configurato il tuo errore in modo che le notifiche non vengano mostrate sullo schermo.

Prova incollare questo nella parte superiore del vostro codice:

error_reporting(E_ALL | E_STRICT); 
+3

chi sta ancora upvoting? –

+3

Per quanto posso vedere, questo non è corretto. Anche quando si impostano le impostazioni di segnalazione degli errori più rigorose non ci saranno avvisi. – arvixx

3

perché le funzioni PHP supportano il numero variabile di parametri.

Problemi correlati