Параметр `components` также имеет сложную конфигурацию, поэтому можно его хранить в файле `components.php`
и подключать в файл `web.php` используя `require` как и показано выше.
Содержимое файла `components.php`:
```php
return[
'cache'=>[
'class'=>'yii\caching\FileCache',
],
'mail'=>[
'class'=>'yii\swiftmailer\Mailer',
],
'log'=>[
'class'=>'yii\log\Dispatcher',
'traceLevel'=>YII_DEBUG?3:0,
'targets'=>[
[
'class'=>'yii\log\FileTarget',
],
],
],
'db'=>[
'class'=>'yii\db\Connection',
'dsn'=>'mysql:host=localhost;dbname=stay2',
'username'=>'root',
'password'=>'',
'charset'=>'utf8',
],
];
```
Чтобы получить настройки, хранимые в файле, достаточно подключить файл с помощью `require`.
Пример:
```php
$config=require('path/to/web.php');
(newyii\web\Application($config))->run();
```
## Настройки по умолчанию <a name="default-configurations"></a>
Метод [[Yii::createObject()]] реализован с использованием [dependency injection container](concept-di-container.md).
Это позволяет указывать так называемые *настройки по умолчанию*, которые будут применены ВСЕМ экземплярам классов
во время их инициализации методом [[Yii::createObject()]].
Настройки по умолчанию указываются с помощью метода `Yii::$container->set()` в разделе [предварительной загрузки (bootstrapping)](runtime-bootstrapping.md).
Например, если мы хотим изменить виджет [[yii\widgets\LinkPager]] так, чтобы все виджеты данного вида показывали
5 кнопок на странице вместо 10 (как это установлено изначально), то в нашем случае код будет таким:
```php
\Yii::$container->set('yii\widgets\LinkPager',[
'maxButtonCount'=>5,
]);
```
Если бы мы не установили настройки по умолчанию, то тогда нам нужно было бы каждый раз при использовании LinkPager