Laravel facades vs class aliases
Здесь рассматриваются различия между фасадами (Facades) и псевдонимами классов (Class Aliases) в Laravel, а также объясняется, как они стали восприниматься сообществом Laravel как взаимосвязанные концепции.
Фасады в Laravel представляют собой прокси-объекты для объектов, хранящихся в контейнере служб (Service Container). Если объект привязан к контейнеру служб под именем 'my-service', вы можете вызывать его методы, используя статические методы фасада.
При вызове статического метода на этом фасаде вызывается магический метод __callStatic(), извлекается служба 'my-service' из контейнера, и вызов перенаправляется к этому экземпляру.
Псевдонимы классов позволяют разработчикам создавать альтернативные имена для классов с помощью функции class_alias. Например:
class_alias(MyClass::class, 'BonzuPippinpaddleopsicopolisTheThird');
Это может быть удобно, когда нужно использовать классы с длинными полностью квалифицированными именами (FQCN) в представлениях или когда использование операторов use не уместно.
Основное недопонимание заключается в том, что Laravel по умолчанию создает псевдонимы для всех своих фасадов, делая их доступными как будто они находятся в глобальном пространстве имен. Это привело к тому, что многие в сообществе Laravel перепутали фасады с псевдонимами классов.
Post #4329
3.29K
- 👍 3
- ❤ 2
- 🔥 1