Is it possible to pass an anonymous function as an argument, and have it execute immediately, thus passing the function's return value?
function myFunction(Array $data){
print_r($data);
}
myFunction(function(){
$data = array(
'fruit' => 'apple',
'vegetable' => 'broccoli',
'other' => 'canned soup');
return $data;
});
This throws an error due to the Array type-hint, complaining of an object being passed. Alright, if I remove the type-hint, it of course spits out Closure Object, rather than the results I want. I understand that I am technically passing an object instance of Closure to myFunction, however, I'm near certain that I've seen this accomplished elsewhere. Is this possible? If so, what am I doing wrong?
For the sake of this discussion, I cannot modify the function to which I'm passing the closure.
tl;dr: How can I pass an anonymous function declaration as an argument, resulting in the return value being passed as the argument.
PS: If not clear, the desired output is:
Array
(
[fruit] => apple
[vegetable] => broccoli
[other] => canned soup
)
(function () { })(), but PHP's functions aren't that flexible.