2012-05-14 7 views
12

Có thể chỉ định giá trị đối số mặc định khi đối số là đóng PHP không? Giống như:Đóng cửa PHP dưới dạng đối số hàm tùy chọn

public function getCollection($filter = function($e) { return $e; }) 
{ 
    // Stuff 
} 

Tôi đang thiếu thứ gì đó (có thể là một cú pháp khác?) Hoặc hoàn toàn không thể? Tất nhiên tôi biết tôi có thể làm:

public function getCollection($filter = null) 
{ 
    $filter = is_callable($filter) ? $filter : function($e) { return $e; }; 
    // Stuff 
} 

(LƯU Ý: tôi đã không kiểm tra mã trên)

Trả lời

14

Default arguments chỉ có thể được "lập luận vô hướng", mảng, hoặc NULL.

"scalar values" trong PHP là số, chuỗi và booleans.

Nếu bạn muốn hàm là đối số mặc định, bạn sẽ cần sử dụng cách thứ 2, số 1 là lỗi cú pháp.

+0

Ồ, tôi hiểu rồi. Vì vậy, câu hỏi của tôi là vô ích. Dù sao cũng cảm ơn bạn. – gremo

+1

@ Gremo: Nó không phải là một câu hỏi vô dụng, đó là một câu hỏi hay. Những người khác có thể tự hỏi điều tương tự :-) –

+1

Đồng ý. Tôi là một nhà phát triển PHP nhưng vẫn thấy điều này thú vị. – Madbreaks