@ -1,12 +1,12 @@
Настройк и
========
Конфигураци и
============
Настройк и широко используются в Yii при создании новых объектов или при инициализации уже существующих объектов.
Обычно настройк и включают в себя названия классов создаваемых объектов и список первоначальных значений,
которые должны быть присвоены [свойствам ](concept-properties.md ) объекта. Также в настройка х можно указать список
Конфигураци и широко используются в Yii при создании новых объектов или при инициализации уже существующих объектов.
Обычно конфигураци и включают в себя названия классов создаваемых объектов и список первоначальных значений,
которые должны быть присвоены [свойствам ](concept-properties.md ) объекта. Также в конфигурация х можно указать список
[обработчиков событий ](concept-events.md ) объекта, и/или список [поведений ](concept-behaviors.md ) объекта.
Пример настроек подключения к базе данных и дальнейшей инициализации подключения:
Пример конфигурации подключения к базе данных и дальнейшей инициализации подключения:
```php
$config = [
@ -20,22 +20,22 @@ $config = [
$db = Yii::createObject($config);
```
Метод [[Yii::createObject()]] принимает в качестве аргумента массив настроек и создаёт объект указанного в них класса.
Метод [[Yii::createObject()]] принимает в качестве аргумента массив с конфигурацией и создаёт объект указанного в них класса.
При этом оставшаяся часть конфигурации используется для инициализации свойств, обработчиков событий и поведений объекта.
Если объект уже создан, вы можете использовать [[Yii::configure()]] для того, чтобы инициализировать свойства объекта
массивом настроек :
массивом с конфигурацией :
```php
Yii::configure($object, $config);
```
Обратите внимание, что в этом случае массив с настройками не должен содержать ключ `class` .
Обратите внимание, что в этом случае массив с конфигурацией не должен содержать ключ `class` .
## Формат настроек < a name = "configuration-format" > < / a >
## Формат конфигурации < a name = "configuration-format" > < / a >
Формат настроек выглядит следующим образом:
Формат конфигурации выглядит следующим образом:
```php
[
@ -53,14 +53,14 @@ Yii::configure($object, $config);
создаваемого объекта, а значения — начальными значениями свойств создаваемого объекта.
Таким способом могут быть установлены только публичные переменные объекта и его [свойства ](concept-properties.md ),
созданные через геттеры и сеттеры.
* Элементы `on eventName` указывают какие обработчики должны быть установлены для [событий ](concept-events.md ) объекта.
* Элементы `on eventName` указывают на то, какие обработчики должны быть прикреплены к [событиям ](concept-events.md ) объекта.
Обратите внимание, что ключи массива начинаются с `on ` . Чтобы узнать весь список поддерживаемых видов
обработчиков событий обратитесь в раздел [события ](concept-events.md )
* Элементы `as behaviorName` указывают какие [поведения ](concept-behaviors.md ) должны быть установлены для объекта .
Обратите внимание, что ключи массива начинаются с `as ` . `$behaviorConfig` это массив для настройки
поведения, этот массив такой же как тот, о котором идет речь .
* Элементы `as behaviorName` указывают на то, какие [поведения ](concept-behaviors.md ) должны быть внедрены в объект .
Обратите внимание, что ключи массива начинаются с `as ` ; а `$behaviorConfig` представляет собой конфигурацию для
создания [поведения ](concept-behaviors.md ), похожую на все остальные конфигурации .
Пример настроек с установкой первоначальных значений свойств объекта, обработчика событий и поведения:
Пример конфигурации с установкой первоначальных значений свойств объекта, обработчика событий и поведения:
```php
[
@ -77,21 +77,21 @@ Yii::configure($object, $config);
```
## Использование настроек < a name = "using-configurations" > < / a >
## Использование конфигурации < a name = "using-configurations" > < / a >
Возможность настройки широко используе тся в Yii. В самом начале данной главы мы узнали как
Конфигурации повсеместно использую тся в Yii. В самом начале данной главы мы узнали как
создать объект с необходимыми параметрами используя метод [[Yii::createObject()]].
В данном разделе речь пойдет о настройках приложения и настройка х виджетов — двух основных способов
использования настроек .
В данном разделе речь пойдет о конфигурации приложения и конфигурация х виджетов — двух основных способов
использования конфигурации .
### Настройки приложения < a name = "application-configurations" > < / a >
### Конфигурация приложения < a name = "application-configurations" > < / a >
Настройки [приложения ](structure-applications.md ) пожалуй самые сложные из используемых в фреймворке.
Причина в том, что класс [[yii\web\Application|application]] содержит большое количество настраива емых
Конфигурация [приложения ](structure-applications.md ), пожалуй, самая сложная из используемых в фреймворке.
Причина в том, что класс [[yii\web\Application|application]] содержит большое количество конфигуриру емых
свойств и событий. Более того, свойство приложения [[yii\web\Application::components|components]]
может принимать массив настроек для создания компонентов, регистрируемых на уровне приложения.
Пример настроек приложения для [шаблона приложения basic ](start-basic.md ).
может принимать массив с конфигурацией для создания компонентов, регистрируемых на уровне приложения.
Пример конфигурации приложения для [шаблона приложения basic ](start-basic.md ).
```php
$config = [
@ -125,22 +125,22 @@ $config = [
];
```
Ключ `class` в данных настройках не указывается. Причина в том, что класс вызывается по полному имени во
Ключ `class` в данной конфигурации не указывается. Причина в том, что класс вызывается по полному имени во
[входном скрипте ](structure-entry-scripts.md ):
```php
(new yii\web\Application($config))->run();
```
Для более подробной документации о настройке свойства приложения `components` обратитесь к главам
За более подробной документацией о настройках свойства `components` в конфигурации приложения обратитесь к главам
[приложения ](structure-applications.md ) и [Service Locator ](concept-service-locator.md ).
### Настройк и виджетов < a name = "widget-configurations" > < / a >
### Конфигураци и виджетов < a name = "widget-configurations" > < / a >
При использовании [виджетов ](structure-widgets.md ) часто возникает необходимость изменить параметры виджета с помощью
настроек . Для создания виджета можно использовать два метода: [[yii\base\Widget::widget()]] и
[[yii\base\Widget::beginWidget()]]. Оба метода принимают настройки в виде массива:
конфигурации . Для создания виджета можно использовать два метода: [[yii\base\Widget::widget()]] и
[[yii\base\Widget::beginWidget()]]. Оба метода принимают конфигурацию в виде PHP массива:
```php
use yii\widgets\Menu;
@ -161,11 +161,11 @@ echo Menu::widget([
Обратите внимание что параметр `class` НЕ передается, так как полное имя уже указано.
## Файлы Настроек < a name = "configuration-files" > < / a >
## Конфигурационные файлы < a name = "configuration-files" > < / a >
Если настройки сложные, то их , как правило, разделяют по нескольким PHP файлам. Такие файлы называют
*файлами настроек* или *конфигурационными файлами* . Файл настроек возвращает массив PHP с настройками .
Например, настройки приложения можно хранить в отдельном файле `web.php` , как показано ниже:
Если конфигурация очень сложная, то её , как правило, разделяют по нескольким PHP файлам. Такие файлы называют
*Конфигурационными файлами*. Конфигурационный файл возвращает массив PHP являющийся конфигурацией .
Например, конфигурацию приложения можно хранить в отдельном файле `web.php` , как показано ниже:
```php
return [
@ -207,7 +207,7 @@ return [
];
```
Чтобы получить настройки, хранимые в файле, достаточно подключить файл с помощью `require` :
Чтобы получить конфигурацию, хранящуюся в файле, достаточно подключить файл с помощью `require` :
```php
$config = require('path/to/web.php');
@ -215,12 +215,10 @@ $config = require('path/to/web.php');
```
## Настройк и по умолчанию < a name = "default-configurations" > < / a >
## Значения конфигураци и по умолчанию < a name = "default-configurations" > < / a >
Метод [[Yii::createObject()]] реализован с использованием [dependency injection container ](concept-di-container.md ).
Это позволяет указывать так называемые *настройки по умолчанию* , которые будут применены ко ВСЕМ экземплярам классов
во время их инициализации методом [[Yii::createObject()]]. Настройки по умолчанию указываются с помощью метода
`Yii::$container->set()` на этапе [предварительной загрузки ](runtime-bootstrapping.md ).
Это позволяет задавать так называемые *значения конфигурации по умолчанию* , которые будут применены ко ВСЕМ экземплярам классов во время их инициализации методом [[Yii::createObject()]]. Значения конфигурации по умолчанию указываются с помощью метода `Yii::$container->set()` на этапе [предварительной загрузки ](runtime-bootstrapping.md ).
Например, если мы хотим изменить виджет [[yii\widgets\LinkPager]] так, чтобы все виджеты данного вида показывали максимум
5 кнопок на странице вместо 10 (как это установлено изначально), можно использовать следующий код:
@ -231,15 +229,15 @@ $config = require('path/to/web.php');
]);
```
Если бы мы не установили настройки по умолчанию, то тогда нам нужно было бы каждый раз при использовании LinkPager
указывать настройки `maxButtonCount` .
Без использования значений конфигурации по умолчанию, при использовании LinkPager, вам пришлось бы каждый раз
задавать значение `maxButtonCount` .
## Константы окружения < a name = "environment-constants" > < / a >
Настройки могут различаться в зависимости от окружения , в котором происходит запуск приложения. Например,
в окружении разработчика вы используете базу данных `mydb_dev` , а на продакшн сервере базу данных
`mydb_prod` . Для упрощения смены окружений в Yii существует константа `YII_ENV` . Вы можете указать её во
Конфигурации могут различаться в зависимости от режима , в котором происходит запуск приложения. Например,
в окружении разработчика (development) вы используете базу данных `mydb_dev` , а в эксплуатационном (production) окружении
базу данных `mydb_prod` . Для упрощения смены окружений в Yii существует константа `YII_ENV` . Вы можете указать её во
[входном скрипте ](structure-entry-scripts.md ) своего приложения:
```php
@ -248,20 +246,20 @@ defined('YII_ENV') or define('YII_ENV', 'dev');
`YII_ENV` может принимать следующие значения:
- `prod` : production окружение, т.е. окружение для конечного сервера. Константа `YII_ENV_PROD` установлена в true.
- `prod` : окружение production, т.е. эксплуатационный режим сервера. Константа `YII_ENV_PROD` установлена в true.
Значение по умолчанию.
- `dev` : development окружение, т.е. окружение для разработки. Константа `YII_ENV_DEV` установлена в true.
- `test` : testing окружение, т.е. окружения для тестирования. Константа `YII_ENV_TEST` установлена в true.
- `dev` : окружение development, т.е. режим для разработки. Константа `YII_ENV_DEV` установлена в true.
- `test` : окружение testing, т.е. режим для тестирования. Константа `YII_ENV_TEST` установлена в true.
Используя эти константы вы можете изменить настройки в соответствии с вашим окружением .
Например, чтобы включить [отладочную панель и отладчик ](tool-debugger.md ) в development окружении вы можете использовать
следующие настройк и приложения:
Используя эти константы, вы можете задать в конфигурации значения параметров зависящие от текущего окружения .
Например, чтобы включить [отладочную панель и отладчик ](tool-debugger.md ) в режиме разработки, вы можете использовать
следующий код в конфигураци и приложения:
```php
$config = [...];
if (YII_ENV_DEV) {
// настройки для 'dev' окружения
// значения параметров конфигурации для окружения разработки 'dev'
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
}