[[yii\base\Application::bootstrap|bootstrap]]
Данное свойство является очень удобным, оно позволяет указать массив компонентов, которые должны быть загружены в процессе [[yii\base\Application::bootstrap()|начальной загрузки]] приложения. Например, если вы хотите, чтобы модуль производил тонкую настройку URL правил, вы можете указать его ID в качестве элемента данного свойства.
Каждый из элементов данного свойства, может быть указан в одном из следующих форматов:
- ID, указанный в компонентах;
- ID модуля, указанный в модулях;
- название класса;
- массив конфигурации;
- анонимная функция, которая создаёт и возвращает компонент.
Например,
[
'bootstrap' => [
// ID компонента приложения или модуля
'demo',
// название класса
'app\components\Profiler',
// массив конфигурации
[
'class' => 'app\components\Profiler',
'level' => 3,
],
// анонимная функция
function () {
return new app\components\Profiler();
}
],
]
Info: Если ID модуля такой же, как идентификатор компонента приложения, то в процессе начальной загрузки будет использован компонент приложения. Если Вы вместо этого хотите использовать модуль, то можете указать его при помощи анонимной функции похожей на эту:
[ function () { return Yii::$app->getModule('user'); }, ]
В процессе [начальной загрузки](runtime-bootstrapping.md), каждый компонент будет создан. Если класс компонента имеет интерфейс [[yii\base\BootstrapInterface]], то также будет вызван метод [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]].
Еще одним практическим примером является конфигурация [базового шаблона приложения](start-installation.md), в котором модули `debug` и `gii` указаны как `bootstrap` компоненты, когда приложение находится в отладочном режиме.
```php
if (YII_ENV_DEV) {
// настройка конфигурации для окружения 'dev'
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';
}
Note: Указывание слишком большого количества компонентов в
bootstrap
приведет к снижению производительности приложения, потому что для каждого запроса одно и то же количество компонентов должно быть загружено. Таким образом вы должны использовать начальную загрузку разумно.