Передайте параметры в $cache->get() Symfony

Я боюсь, у меня есть вопрос для начинающих PHP. Я использую компонент Cache Symfony. https://symfony.com/doc/current/components/cache.html

Я вызываю кеш-объект внутри функции, которая получает 2 аргумента ($url, $params).

class MainController extends AbstractController {
    public function do($url, $params) {
        $cache = new FilesystemAdapter();
        return $cache->get('myCacheName', function (ItemInterface $c) {
            global $url;
            var_dump($url); // ---> null !!!!
        }
    }
}

Моя проблема в том, что я не могу получить доступ к аргументам функции внутри вызова метода кеша. $url и $ params равны нулю. Конечно, я мог бы использовать общедоступные переменные класса в классе MainController для отправки переменных назад, но это кажется немного неуклюжим.

1 ответ

Решение

В PHP замыкание по умолчанию не имеет доступа к переменным, находящимся вне области видимости. use такие как:

return $cache->get('myCacheName', function (ItemInterface $c) use ($url) {
    var_dump($url); // ---> no longer null !!!!
}
Другие вопросы по тегам