|
|
|
Компоненти додатка
|
|
|
|
==================
|
|
|
|
|
|
|
|
Додатки є [сервіс локаторами](concept-service-locators.md). Вони зберігають багато так званих
|
|
|
|
*компонентів додатку*, які надають різноманітні інструменти для обробки запитів. Наприклад,
|
|
|
|
компонент `urlManager` відповідає за маршрутизацію веб запитів до потрібного контролера;
|
|
|
|
компонент `db` надає інструменти для работи з базою даних; і т. д.
|
|
|
|
|
|
|
|
Кожний компонент додатка має свій унікальний ID, який дозволяє ідентифікувати його серед інших різноманітних компонентів
|
|
|
|
в одному і тому ж додатку. Ви можете отримати доступ до компонента наступним чином:
|
|
|
|
|
|
|
|
```php
|
|
|
|
\Yii::$app->componentID
|
|
|
|
```
|
|
|
|
|
|
|
|
Наприклад, ви можете використовувати `\Yii::$app->db` для отримання [[yii\db\Connection|з’єднання з БД]],
|
|
|
|
і `\Yii::$app->cache` для отримання доступу до основного компонента [[yii\caching\Cache|кеша]], зареєстрованого в додатку.
|
|
|
|
|
|
|
|
Компонент додатка створюється при першому звертанні через попередній вираз.
|
|
|
|
Будь-які подальші звертання будуть повертати той же примірник компонента.
|
|
|
|
|
|
|
|
Компонентами додатку можуть бути будь-які об’єкти. Ви можете зареєструвати їх за допомогою властивості
|
|
|
|
[[yii\base\Application::components]] в [конфігурації](structure-applications.md#application-configurations) додатка.
|
|
|
|
Наприклад,
|
|
|
|
|
|
|
|
```php
|
|
|
|
[
|
|
|
|
'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;
|
|
|
|
},
|
|
|
|
],
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
|
|
|
> Інформація: Хоча ви можете зареєструвати стільки компонентів в додатку скільки вам потрібно,
|
|
|
|
все ж таки варто робити це осмислено. Компоненти додатку схожі на глобальні змінні.
|
|
|
|
Використання дуже великої кількості компонетів додатку може потенційно зробити ваш код складним для розробки і тестування.
|
|
|
|
У більшості випадків ви можете просто створити локальний компонент і використовувати його при необхідності.
|
|
|
|
|
|
|
|
|
|
|
|
## Попереднє завантаження компонентів <span id="bootstrapping-components"></span>
|
|
|
|
|
|
|
|
Як згадувалося вище, компонент додатка буде створено при першому звертанні.
|
|
|
|
Якщо до нього не буде зроблено звертань під час запиту - його взагалі не буде створено.
|
|
|
|
Однак іноді, ви можете створити екземпляр компонента додатка для кожного запиту, навіть якщо до нього не зверталися явно.
|
|
|
|
Щоб зробити це, ви можете додати ідентифікатор до властивості [[yii\base\Application::bootstrap|bootstrap]] додатка.
|
|
|
|
|
|
|
|
Наприклад, наступна конфігурація додатка завжди гарантує створення компонента `log`:
|
|
|
|
|
|
|
|
```php
|
|
|
|
[
|
|
|
|
'bootstrap' => [
|
|
|
|
'log',
|
|
|
|
],
|
|
|
|
'components' => [
|
|
|
|
'log' => [
|
|
|
|
// конфігурація для компонента "log"
|
|
|
|
],
|
|
|
|
],
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Вбудовані компоненти додатку <span id="core-application-components"></span>
|
|
|
|
|
|
|
|
В Yii є декілька *вбудованих* компонентів додатку із фіксованими ID та конфігураціями за замовчуванням.
|
|
|
|
Наприклад, компонент [[yii\web\Application::request|request]] використовується для збору інформації про запит
|
|
|
|
користувача і розбору його у певний [маршрут](runtime-routing.md); компонент [[yii\base\Application::db|db]]
|
|
|
|
являє собою з’єднання з базою даних, через яке ви можете виконувати запити.
|
|
|
|
Саме з допомогою цих вбудованих компонентів Yii додатки можуть обрабляти запит користувача.
|
|
|
|
|
|
|
|
Нижче наведено перелік вбудованих компонентів додатку. Ви можете конфігурувати їх так само, як і інші компоненти додатку.
|
|
|
|
Коли ви конфігуруєте вбудований компонент додатку і не вказуєте клас цього компонента, то буде використовуватись
|
|
|
|
значення за замовчуванням.
|
|
|
|
|
|
|
|
* [[yii\web\AssetManager|assetManager]]: використовується для керування і відображенням ресурсів додатку.
|
|
|
|
Більш детальна інформація наведена у розділі [Ресурси](output-assets.md).
|
|
|
|
* [[yii\db\Connection|db]]: являє собою з’єднання з базою даних, через яке ви можете виконувати запити.
|
|
|
|
Зверніть увагу, що, коли конфігуруєте даний компонент, ви маєте вказати клас компонента, разом із рештою
|
|
|
|
необхідних параметрів, наприклад [[yii\db\Connection::dsn]].
|
|
|
|
Більш детальна інформація наведена у розділі [Об’єкти доступу до даних (DAO)](db-dao.md).
|
|
|
|
* [[yii\base\Application::errorHandler|errorHandler]]: здійснює обработку PHP помилок і виключень.
|
|
|
|
Більш детальна інформація наведена у розділі [Обробка помилок](runtime-handling-errors.md).
|
|
|
|
* [[yii\i18n\Formatter|formatter]]: форматує дані для відображення їх кінцевому користувачу. Наприклад, число може
|
|
|
|
бути відображене із різноманітними роздільниками, дата може бути зображена у розширеному форматі.
|
|
|
|
Більш детальна інформація наведена у розділі [Форматування даних](output-formatting.md).
|
|
|
|
* [[yii\i18n\I18N|i18n]]: використовується для перекладу повідомлень і форматування.
|
|
|
|
Більш детальна інформація наведена у розділі [Інтернаціоналізація](tutorial-i18n.md).
|
|
|
|
* [[yii\log\Dispatcher|log]]: обробка і маршрутизація логів.
|
|
|
|
Більш детальна інформація наведена у розділі [Логування](runtime-logging.md).
|
|
|
|
* [[yii\swiftmailer\Mailer|mail]]: надає можливості для побудови і відправки поштових повідомлень.
|
|
|
|
Більш детальна інформація наведена у розділі [Відправлення пошти](tutorial-mailing.md).
|
|
|
|
* [[yii\base\Application::response|response]]: являє собою об’єкт відповіді сервера кінцевим користувачам.
|
|
|
|
Більш детальна інформація наведена у розділі [Відповіді](runtime-responses.md).
|
|
|
|
* [[yii\base\Application::request|request]]: являє собою об’єкт запиту, який сервер отримує від кінцевих користувачів.
|
|
|
|
Більш детальна інформація наведена у розділі [Запити](runtime-requests.md).
|
|
|
|
* [[yii\web\Session|session]]: надає інформація про сесії.
|
|
|
|
Даний компонент доступний тільки у [[yii\web\Application|веб додатках]].
|
|
|
|
Більш детальна інформація наведена у розділі [Сесії і куки](runtime-sessions-cookies.md).
|
|
|
|
* [[yii\web\UrlManager|urlManager]]: використовується для розбору і побудови URL.
|
|
|
|
Більш детальна інформація наведена у розділі [Маршрутизація та створення URL](runtime-routing.md).
|
|
|
|
* [[yii\web\User|user]]: являє собою інформацію авторизованого користувача.
|
|
|
|
Даний компонент доступний тільки у [[yii\web\Application|веб додатках]].
|
|
|
|
Більш детальна інформація наведена у розділі [Аутентифікація](security-authentication.md).
|
|
|
|
* [[yii\web\View|view]]: використовується для відображення представлень.
|
|
|
|
Більш детальна інформація наведена у розділі [Представлення](structure-views.md).
|