Приложения являются сервис локаторами. Они хранят множество так называемых компонентов приложения, которые предоставляют различные средства для обработки запросов. Например, компонент urlManager
ответственен за маршрутизацию веб запросов к нужному контроллеру; компонент db
предоставляет средства для работы с базой данных; и т. д.
Каждый компонент приложения имеет свой уникальный ID, который позволяет идентифицировать его среди других различных компонентов в одном и том же приложении. Вы можете получить доступ к компоненту следующим образом:
\Yii::$app->componentID
Например, вы можете использовать \Yii::$app->db
для получения соединения с БД, и \Yii::$app->cache
для получения доступа к основному компоненту кэша, зарегистрированному в приложении.
Компонент приложения будет создан при первом обращении к нему через вышеуказанное выражение. Любые дальнейшие обращения будут возвращать тот же экземпляр компонента.
Компонентами приложения могут быть любые объекты. Вы можете зарегистрировать их с помощью
свойства yii\base\Application::$components в конфигурации приложения. Например,
[ 'components' => [ // регистрация "cache" компонента с помощью имени класса 'cache' => 'yii\caching\ApcCache', // регистрация "db" компонента с помощью массива конфигурации 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], // регистрация "search" компонента с помощью анонимной функции 'search' => function () { return new app\components\SolrService; }, ], ]
Информация: Хотя вы можете зарегистрировать столько компонентов в приложении сколько вам нужно, все таки стоит это делать разумно. Компоненты приложения похожи на глобальные переменные. Использование слишком большого количества компонентов приложения может потенциально сделать ваш код сложным для разработки и тестирования. В большинстве случаев вы можете просто создать локальный компонент и использовать его при необходимости.
Как упоминалось выше, компонент приложения будет создан только при первом обращении к нему. Однако может возникнуть необходимость в наличии созданного компонента при каждом запросе, даже если напрямую к нему ни разу не обращались. Для этого необходимо указать ID компонента в качестве элемента свойства bootstrap.
К примеру, при данной конфигурации компонент log
всегда подгружается при загрузке:
[ 'bootstrap' => [ 'log', ], 'components' => [ 'log' => [ // конфигурация для компонента `log` ], ], ]
В Yii есть несколько встроенных компонентов приложения, с фиксированными ID и конфигурациями по умолчанию. Например, компонент request используется для сбора информации о запросе пользователя и разбора его в определенный маршрут; компонент db представляет собой соединение с базой данных, через которое вы можете выполнять запросы. Именно с помощью этих встроенных компонентов Yii приложения могут обработать запрос пользователя.
Ниже представлен список встроенных компонентов приложения. Вы можете конфигурировать их также как и другие компоненты приложения. Когда вы конфигурируете встроенный компонент приложения и не указываете класс этого компонента, то значение по умолчанию будет использовано.
long
. Более детальная информация представлена в разделе Форматирование данных; Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.