2011-10-28 37 views
10

Tôi là một n00b tại php. Tôi đã học về các tham số mặc định nên tôi đã thực hiện chức năng này.Tại sao PHP không ném lỗi khi tôi truyền quá nhiều tham số cho một hàm?

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

tôi đã thực hiện các cuộc gọi

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

Hai đầu tiên in những gì đã được dự kiến ​​tức là

Hello johnny 
Hello ted 

nhưng cuộc gọi thứ ba cũng in

Hello ted 

Tôi đã chờ đợi một lỗi, sau tất cả các func tion được thực hiện cho một đối số trong khi tôi đang gọi nó với hai đối số.
Tại sao không có lỗi?

+2

bởi vì trong php bạn có thể sử dụng loại chức năng này: http://it.php.net/func_get_args – dynamic

Trả lời

13

PHP không ném ra một lỗi về chức năng quá tải.

+0

Theo https://bugs.php.net/bug.php?id=13892, đó là WONTFIX –

-2

Chỉ nên in thông báo, nhưng không có lỗi. Tôi nghĩ bạn đã thiết lập báo cáo lỗi để thông báo không hiển thị trên màn hình.

Hãy thử dán này ở phía trên cùng của mã của bạn:

error_reporting(E_ALL | E_STRICT); 
+3

ai vẫn còn upvoting đó? –

+3

Theo như tôi thấy, điều này là không chính xác. Ngay cả khi đặt cài đặt báo cáo lỗi nghiêm ngặt, sẽ không có thông báo nào. – arvixx

3

vì các hàm PHP hỗ trợ số lượng tham số khác nhau.

Các vấn đề liên quan