Có thể chuyển một hàm ẩn danh làm đối số và thực thi ngay lập tức, do đó chuyển giá trị return
của hàm?PHP: Vượt qua chức năng ẩn danh làm đối số
function myFunction(Array $data){
print_r($data);
}
myFunction(function(){
$data = array(
'fruit' => 'apple',
'vegetable' => 'broccoli',
'other' => 'canned soup');
return $data;
});
Điều này gây ra lỗi do yêu cầu loại Array
, khiếu nại đối tượng được chuyển. Được rồi, nếu tôi loại bỏ gợi ý kiểu, tất nhiên nó sẽ thoát ra khỏi Closure Object
, thay vì kết quả tôi muốn. Tôi hiểu rằng tôi về mặt kỹ thuật truyền một thể hiện đối tượng của Closure
đến myFunction
, tuy nhiên, tôi gần chắc chắn rằng tôi đã thấy điều này được thực hiện ở nơi khác. Điều này có thể không? Nếu vậy, tôi đang làm gì sai?
Vì mục đích của cuộc thảo luận này, tôi không thể sửa đổi chức năng mà tôi vượt qua phần đóng.
tl; dr: Làm cách nào tôi có thể chuyển một khai báo hàm ẩn danh làm đối số, dẫn đến giá trị trả về được chuyển làm đối số.
PS: Nếu không rõ ràng, các đầu ra mong muốn là:
Array
(
[fruit] => apple
[vegetable] => broccoli
[other] => canned soup
)
Bạn đã có thể thấy điều này trong Javascript như '(function() {})()', nhưng chức năng của PHP không phải là linh hoạt. – deceze