Выбор ответа Senior Laravel: контейнер и очереди обновлено
Как работают фасады
Вопрос
Что происходит при вызове Cache::get("key")?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: callStatic достаёт из контейнера сервис cache и вызывает get. Фасад это прокси со статическим интерфейсом: getFacadeAccessor() возвращает ключ сервиса, а callStatic перенаправляет вызов в экземпляр из контейнера (он кешируется).
Варианты ответа
Cacheэто статический класс, кеш хранится в его статических свойствах__callStaticдостаёт из контейнера сервисcacheи вызываетgetправильный ответ- Вызов компилируется в прямое обращение к Redis без промежуточных слоёв
- Фасад создаёт новый экземпляр кеша при каждом статическом вызове
Разбор
Фасад это прокси со статическим интерфейсом: getFacadeAccessor() возвращает ключ сервиса, а __callStatic перенаправляет вызов в экземпляр из контейнера (он кешируется). Поэтому фасады можно подменять в тестах (Cache::shouldReceive, Queue::fake()). Хранилищем кеша управляет драйвер, а не сам фасад.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.