TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #4045 3.07K
Laravel под капотом — Фасады

Статья предоставляет подробное руководство по системе фасадов в Laravel, фокусируясь на ее работе под капотом. Начинается с изучения базового примера в приложении Laravel, анализируя код в файле web.php и обнаружив, что у класса Route нет метода get(), возникает вопрос о том, как работает маршрутизатор Laravel.

Исследование приводит к классу Facade, который выступает в роли родительского класса для фасадов в Laravel. Ключевым методом здесь является __callStatic(), магическим методом, вызываемым при вызове неопределенного статического метода на фасаде. Этот метод динамически разрешает экземпляр фасада, вызывая resolveFacadeInstance(), который, в свою очередь, использует метод getFacadeRoot() для получения фактического экземпляра класса.

Метод getFacadeRoot() полагается на метод getFacadeAccessor() в дочернем классе фасада (в данном случае Route), который возвращает строку, представляющую ключ для разрешения экземпляра класса из контейнера приложения. Контейнер приложения устанавливается во время процесса старта, где ключевую роль играет класс Kernel Laravel.

Затем объясняется, как создать пользовательский фасад, привязав класс к контейнеру приложения и создавая класс фасада, указывающий соответствующую строку в getFacadeAccessor(). Процесс иллюстрируется с использованием класса HelloWorld.

Кроме того, представляется концепция фасадов в реальном времени, позволяющая использовать фасады без явного их создания. Это достигается добавлением префикса Facades к пространству имен контроллеров, что вызывает динамическое создание фасада в процессе старта приложения.
  • 👍 8
  • 🥱 3
  • ❤ 2
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →