PHP: передать анонимную функцию в качестве аргумента

Можно ли передать анонимную функцию в качестве аргумента и заставить ее выполняться немедленно, таким образом передавая значение функции return ?

function myFunction(Array $data){
    print_r($data);
}

myFunction(function(){
    $data = array(
        'fruit'     => 'apple',
        'vegetable' => 'broccoli',
        'other'     => 'canned soup');
    return $data;
});

Это вызывает ошибку из-за ] Подсказка типа Array , жалоба на переданный объект. Хорошо, если я удалю подсказку типа, она, конечно же, выдаст Closure Object , а не результаты, которые мне нужны. Я понимаю, что технически я передаю экземпляр объекта Closure в myFunction , однако я почти уверен, что видел это в другом месте. Это возможно? Если да, то что я делаю не так?

Ради этого обсуждения я не могу изменить функцию, которой я передаю закрытие.

tl; dr: Как я могу передать объявление анонимной функции как аргумент в результате возвращаемое значение передается в качестве аргумента.

PS: Если не ясно, желаемый результат:

Array
(
    [fruit] => apple
    [vegetable] => broccoli
    [other] => canned soup
)
12
задан Dan Lugg 16 November 2010 в 21:45
поделиться