php Передать переменную из родительской области видимости в анонимную функцию

Необходимо использовать в анонимной функции какую-то переменную из родительской области видимости.

Если просто использовать переменную внутри анонимной функции:

$example = function () {
    var_dump($message);
};
$example();

Возникает ошибка:

Undefined variable: message

Решение

Используйте слово use:

$example = function () use ($message) {
    var_dump($message);
};
$example();

Пример с array_map

Функция array_map() принимает в качестве первого аргумента анонимную функцию. Передадим в функцию помимо очередного значения массива request из родительской области видимости:

$foundProducts = array_map(function(Product $product) use ($request) {
            return [
                'name' => $product->getName(),
                'url' => $request->getSchemeAndHttpHost() . $this->generateUrl('products'),
            ];
        }, $searchResult);

Источники

vedro-compota's picture

спасибо, полезно) раньше не сталкивался.

_____________
матфак вгу и остальная классика =)