Компоненты приложений
Приложения являются локаторами сервисов. Они содержат набор так называемых компонентов приложения, которые предоставляют различные сервисы для обработки запросов. Например, компонент urlManager отвечает за маршрутизацию веб-запросов соответствующим контроллерам; компонент db предоставляет сервисы, связанные с базой данных; и так далее.
Каждый компонент приложения имеет идентификатор, который однозначно определяет его среди других компонентов приложения в одном приложении. Вы можете получить доступ к компоненту приложения через выражение:
\Yii::$app->componentID
Например, вы можете использовать \Yii::$app->db для получения соединения с базой данных, и \Yii::$app->cache для получения зарегистрированного в приложении главного кэша.
Компонент приложения создаётся в первый раз, когда к нему обращаются с помощью вышеуказанного выражения. Любые последующие обращения вернут тот же экземпляр компонента.
Компоненты приложения могут быть любыми объектами. Вы можете зарегистрировать их, настроив свойство yii\base\Application::$components в конфигурациях приложения. Например,
[
'components' => [
// register "cache" component using a class name
'cache' => 'yii\caching\ApcCache',
// register "db" component using a configuration array
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=demo',
'username' => 'root',
'password' => '',
],
// register "search" component using an anonymous function
'search' => function () {
return new app\components\SolrService;
},
],
]
Информация: Хотя вы можете зарегистрировать любое количество компонентов приложения, следует делать это обдуманно. Компоненты приложения похожи на глобальные переменные. Использование слишком большого количества компонентов приложения может потенциально усложнить тестирование и поддержку вашего кода. Во многих случаях вы можете просто создать локальный компонент и использовать его по мере необходимости.
Компоненты инициализации
Как упоминалось выше, компонент приложения будет создан только при первом обращении к нему. Если он вообще не используется в запросе, он не будет создан. Однако иногда вам может потребоваться создать компонент приложения для каждого запроса, даже если он не используется явно. Для этого вы можете указать его идентификатор в свойстве bootstrap приложения.
Например, следующая конфигурация приложения гарантирует, что компонент log всегда загружается:
[
'bootstrap' => [
'log',
],
'components' => [
'log' => [
// configuration for "log" component
],
],
]
Основные компоненты приложения
Yii определяет набор основных компонентов приложения с фиксированными идентификаторами и значениями по умолчанию. Например, компонент request используется для сбора информации о запросе пользователя и преобразования его в маршрут; компонент db представляет собой подключение к базе данных, с помощью которого вы можете выполнять запросы к базе данных. Именно с помощью этих основных компонентов приложения Yii-приложения могут обрабатывать запросы пользователей.
Ниже приведён список предопределённых основных компонентов приложения. Вы можете настраивать и изменять их, как и обычные компоненты приложения. При настройке основного компонента приложения, если вы не укажете его класс, будет использован класс по умолчанию.
- assetManager: управляет пакетами ресурсов и публикацией ресурсов. Подробную информацию см. в разделе Управление ресурсами.
- db: представляет собой подключение к базе данных, с помощью которого можно выполнять запросы к БД. Обратите внимание, что при настройке этого компонента необходимо указать класс компонента, а также другие необходимые свойства компонента, такие как yii\db\Connection::$dsn. Подробную информацию см. в разделе Объекты доступа к данным.
- errorHandler: обрабатывает ошибки PHP и исключения. Подробную информацию см. в разделе Обработка ошибок.
- formatter: форматирует данные при их отображении конечным пользователям. Например, число может отображаться с разделителем тысяч, дата — в длинном формате. Подробную информацию см. в разделе Форматирование данных.
- i18n: поддерживает перевод и форматирование сообщений. Подробную информацию см. в разделе Международная поддержка.
- log: управляет целевыми логами. Подробную информацию см. в разделе Ведение журнала.
- mailer: поддерживает создание и отправку писем. Подробную информацию см. в разделе Отправка почты.
- response: представляет собой ответ, отправляемый конечным пользователям. Подробную информацию см. в разделе Ответы.
- request: представляет собой запрос, полученный от конечных пользователей. Подробную информацию см. в разделе Запросы.
- session: представляет собой информацию о сессии. Этот компонент доступен только в веб-приложениях. Подробную информацию см. в разделе Сессии и файлы cookie.
- urlManager: поддерживает парсинг и создание URL-адресов. Подробную информацию см. в разделе Маршрутизация и создание URL-адресов.
- user: представляет собой информацию об авторизации пользователя. Этот компонент доступен только в веб-приложениях. Подробную информацию см. в разделе Авторизация.
- view: поддерживает отрисовку представлений. Подробную информацию см. в разделе Представления.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/guide-structure-application-components.html