Выбор ответа Senior Laravel: контейнер и очереди обновлено

Как работают фасады

Вопрос

Что происходит при вызове Cache::get("key")?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: callStatic достаёт из контейнера сервис cache и вызывает get. Фасад это прокси со статическим интерфейсом: getFacadeAccessor() возвращает ключ сервиса, а callStatic перенаправляет вызов в экземпляр из контейнера (он кешируется).

Варианты ответа

  1. Cache это статический класс, кеш хранится в его статических свойствах
  2. __callStatic достаёт из контейнера сервис cache и вызывает getправильный ответ
  3. Вызов компилируется в прямое обращение к Redis без промежуточных слоёв
  4. Фасад создаёт новый экземпляр кеша при каждом статическом вызове

Разбор

Фасад это прокси со статическим интерфейсом: getFacadeAccessor() возвращает ключ сервиса, а __callStatic перенаправляет вызов в экземпляр из контейнера (он кешируется). Поэтому фасады можно подменять в тестах (Cache::shouldReceive, Queue::fake()). Хранилищем кеша управляет драйвер, а не сам фасад.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.