Оглавление

Введение Первое знакомство Структура приложения Обработка запросов Основные понятия Работа с базами данных Получение данных от пользователя Отображение данных Безопасность Кеширование Веб-сервисы REST Тестирование Специальные темы Виджеты Хелперы
Зачем реклама?

Компоненты приложения

Приложения являются сервис локаторами. Они хранят множество так называемых компонентов приложения, которые предоставляют различные средства для обработки запросов. Например, компонент 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;
        },
    ],
]

Info: Хотя вы можете зарегистрировать столько компонентов в приложении сколько вам нужно, все таки стоит это делать разумно. Компоненты приложения похожи на глобальные переменные. Использование слишком большого количества компонентов приложения может потенциально сделать ваш код сложным для разработки и тестирования. В большинстве случаев вы можете просто создать локальный компонент и использовать его при необходимости.

Компоненты начальной загрузки #

Как упоминалось выше, компонент приложения будет создан только при первом обращении к нему. Однако может возникнуть необходимость в наличии созданного компонента при каждом запросе, даже если напрямую к нему ни разу не обращались. Для этого необходимо указать ID компонента в качестве элемента свойства bootstrap.

К примеру, при данной конфигурации компонент log всегда подгружается при загрузке:

[
    
'bootstrap' => [
        
'log',
    ],
    
'components' => [
        
'log' => [
            
// конфигурация для компонента `log`
        
],
    ],
]

Встроенные компоненты приложения #

В Yii есть несколько встроенных компонентов приложения, с фиксированными ID и конфигурациями по умолчанию. Например, компонент request используется для сбора информации о запросе пользователя и разбора его в определенный маршрут; компонент db представляет собой соединение с базой данных, через которое вы можете выполнять запросы. Именно с помощью этих встроенных компонентов Yii приложения могут обработать запрос пользователя.

Ниже представлен список встроенных компонентов приложения. Вы можете конфигурировать их также как и другие компоненты приложения. Когда вы конфигурируете встроенный компонент приложения и не указываете класс этого компонента, то значение по умолчанию будет использовано.

  • assetManager: используется для управления и опубликования ресурсов приложения. Более детальная информация представлена в разделе Ресурсы;
  • db: представляет собой соединение с базой данных, через которое вы можете выполнять запросы. Обратите внимание, что когда вы конфигурируете данный компонент, вы должны указать класс компонента также как и остальные необходимые параметры, такие как yii\db\Connection::dsn. Более детальная информация представлена в разделе Объекты доступа к данным (DAO);
  • errorHandler: осуществляет обработку PHP ошибок и исключений. Более детальная информация представлена в разделе Обработка ошибок;
  • formatter: форматирует данные для отображения их конечному пользователю. Например, число может быть отображено с различными разделителями, дата может быть отображена в формате long. Более детальная информация представлена в разделе Форматирование данных;
  • i18n: используется для перевода сообщений и форматирования. Более детальная информация представлена в разделе Интернационализация;
  • log: обработка и маршрутизация логов. Более детальная информация представлена в разделе Логирование;
  • mailer: предоставляет возможности для составления и рассылки писем. Более детальная информация представлена в разделе Отправка почты;
  • response: представляет собой данные от сервера, которые будет направлены пользователю. Более детальная информация представлена в разделе Ответы;
  • request: представляет собой запрос, полученный от конечных пользователей. Более детальная информация представлена в разделе Запросы;
  • session: информация о сессии. Данный компонент доступен только в веб приложениях. Более детальная информация представлена в разделе Сессии и куки;
  • urlManager: используется для разбора и создания URL. Более детальная информация представлена в разделе Разбор и генерация URL;
  • user: представляет собой информацию аутентифицированного пользователя. Данный компонент доступен только в веб приложениях. Более детальная информация представлена в разделе Аутентификация;
  • view: используется для отображения представлений. Более детальная информация представлена в разделе Представления.

Зачем реклама?