2011-10-28 6 views
10

Jestem n00b na php. Dowiedziałem się o parametrach domyślnych, więc wykonałem tę funkcję.Dlaczego PHP nie generuje błędu, gdy przekazuję zbyt wiele parametrów do funkcji?

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

zrobiłem tych połączeń

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

Pierwsze dwa drukowane co oczekiwano tj

Hello johnny 
Hello ted 

ale trzeci wezwanie drukowane również

Hello ted 

I oczekiwał błąd, po wszystkim func Podejmowana jest jedna argumentacja, podczas gdy ja ją nazywam dwoma argumentami.
Dlaczego nie wystąpił błąd?

+2

ponieważ w php możesz użyć tego rodzaju funkcji: http://it.php.net/func_get_args – dynamic

Odpowiedz

13

PHP nie rzucać błąd na przeciążenia funkcji.

+0

Zgodnie z https://bugs.php.net/bug.php?id=13892, jest to WONTFIX –

-2

Powinien wydrukować tylko powiadomienie, ale nie może zawierać błędów. Myślę, że masz skonfigurowane raportowanie błędów, aby powiadomienia nie były wyświetlane na ekranie.

Spróbuj wklejanie tego na górze kodzie:

error_reporting(E_ALL | E_STRICT); 
+3

kto nadal to przegrywa? –

+3

O ile widzę, jest to niepoprawne. Nawet przy ustawieniu najściślejszego ustawienia raportowania błędów nie będzie żadnych powiadomień. – arvixx

3

ponieważ funkcje PHP obsługują zmienną liczbę parametrów.