|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Соответствие фасадов и классов в Laravel 5.5
Время создания: 29.03.2019 15:02
Автор: xintrea
Текстовые метки: laravel, класс, фасад, таблица, соответствие, откуда берется, API
Раздел: Компьютер - Программирование - Язык PHP - Laravel
Запись: xintrea/mytetra_syncro/master/base/15538609403fdgnxor6h/text.html на raw.github.com
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как подключается фасад в код пользовательского класса Часто начинающие программисты Laravel не могут понять, каким образом происходит подключение класса фасада. В примерах и в рабочем коде можно просто использовать фасад, например так: Auth::routes(); и при этом нигде явно не подключается никакого пространства имен, в котором существовал бы класс Auth. Откуда тогда этот класс берется? Все дело в настройках текущего Web-приложения. Если заглянуть в файл /config/app.php, то в настройках приложения можно обнаружить список с именем aliases. Выглядит он вот так: 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, ... ], Все классы, которые перечислены в этом списке, регистрируются при старте обработки HTTP-запроса и существуют все время выполнения пользовательского кода. Поэтому нет необходимости при работе с фасадом подключать пространство имен для доступа к коду класса фасада - это будет сделано автоматически на этапе инициализации обработки HTTP-запроса. Для справки следует знать, что не все классы фасадов располагаются по пути Illuminate\Support\Facades Многие компоненты имеют различные свои фасады, и такие фасады размещаются по другим путям. Например, с некоторых пор в поставке Illiminate нет фасадов для работы с формами и HTML. Вместо них используются фасады из поставки Collective, лежащие в каталоге Collective\Html А сами фасады расположены так: 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, Где искать классы фасадов В Laravel 5.5 файлы классов фасадов расположены по следующему пути: /vendor/laravel/framework/src/Illuminate/Support/Facades/... Если нужно понять, что делает тот или иной метод, вначале нужно посмотреть, есть ли его реализация в самом классе фасада. И только после этого надо искать, какой класс внутри себя фасад динамически подключает. Таблица соответствия Так как структура Laravel такова, что невозможно быстро понять по коду фасада какой класс он реально представляет и какие методы в нем реализованы (из-за использования магического метода PHP __staticCall() для вызова несуществующих методов), в документации Laravel есть таблица соответствия. Актуальная версия этой таблицы находится в разделе Contracts -> Contract Reference: https://laravel.com/docs/master/contracts#contract-reference В таблице перечислены все фасады и соответствующие им классы. Это полезный инструмент для быстрого начала работы с документацией по API, находя реальные классы от корня пространства имен. Также указаны текстовые ключи привязок в сервис-контейнере (см. третий столбец).
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|