Commit 806cb1ec by Alexander Makarov

Edited Russian translation of Configurations guide

parent 254e3704
Настройки
==============
========
Настройки широко используются в Yii при создании новых объектов или при инициализации уже существующих объектов.
Обычно настройки включают в себя названия классов создаваемых объектов и список первоначальных значений
которые должны быть присвоены [свойствам](concept-properties.md) объекта. Также в настройках можно указать список
[обработчиков событий (event handlers)](concept-events.md) объекта, и/или список
[поведений (behaviors)](concept-behaviors.md) объекта.
[обработчиков событий](concept-events.md) объекта, и/или список [поведений](concept-behaviors.md) объекта.
Пример настроек подключения к базе данных и дальнейшей инициализации подключения:
......@@ -21,23 +20,20 @@ $config = [
$db = Yii::createObject($config);
```
Ключ 'class' в настройках указывает на основе какого файла должен создаваться объект. Затем метод [[Yii::createObject()]]
создает объект $db на основе класса указанного в ключе 'class' массива $config. После инициализации объекта будут
использованы оставшиеся параметры настроек для инициализации свойств объекта, обработчиков событий и/или поведений.
Метод [[Yii::createObject()]] принимает в качестве аргумента массив настроек и создаёт объект указанного в них класса.
При этом оставшаяся часть конфигурации используется для инициализации свойств, обработчиков событий и поведений объекта.
Если вы создали объект, то, используя метод [[Yii::configure()]], вы можете инициализировать свойства этого объекта
с помощью массива, в котором указаны настройки.
Пример:
Если объект уже создан, вы можете использовать [[Yii::configure()]] для того, чтобы инициализировать свойства объекта
массивом настроек:
```php
Yii::configure($object, $config);
```
Обратите внимание, что при таком способе использования настроек массив с настройками не должен содержать ключ 'class'
и его значение.
Обратите внимание, что в этом случае массив с настройками не должен содержать ключ `class`.
## Формат Настроек <a name="configuration-format"></a>
## Формат настроек <a name="configuration-format"></a>
Формат настроек выглядит следующим образом:
......@@ -52,11 +48,11 @@ Yii::configure($object, $config);
где
* Элемент `class` указывает полное имя создаваемого объекта.
* Элемент `class` указывает абсолютное имя класса создаваемого объекта.
* Элементы `propertyName` указывают первоначальные значения свойств создаваемого объекта. Ключи являются именами свойств
создаваемого объекта, а значения ключей - значениями свойств создаваемого объекта.
Таким способом могут быть установлены только публичные переменные объекта и [свойства](concept-properties.md),
созданные через геттеры/сеттеры (getters/setters).
создаваемого объекта, а значения — начальными значениями свойств создаваемого объекта.
Таким способом могут быть установлены только публичные переменные объекта и его [свойства](concept-properties.md),
созданные через геттеры и сеттеры.
* Элементы `on eventName` указывают какие обработчики должны быть установлены для [событий](concept-events.md) объекта.
Обратите внимание, что ключи массива начинаются с `on `. Чтобы узнать весь список поддерживаемых видов
обработчиков событий обратитесь в раздел [события](concept-events.md)
......@@ -64,7 +60,7 @@ Yii::configure($object, $config);
Обратите внимание, что ключи массива начинаются с `as `. `$behaviorConfig` это массив для настройки
поведения, этот массив такой же как тот, о котором идет речь.
Пример настроек с установкой первоначальных значений свойств объекта, с установкой обработчика событий и поведения:
Пример настроек с установкой первоначальных значений свойств объекта, обработчика событий и поведения:
```php
[
......@@ -75,28 +71,27 @@ Yii::configure($object, $config);
},
'as indexer' => [
'class' => 'app\components\IndexerBehavior',
// ... property init values ...
// ... начальные значения свойств ...
],
]
```
## Использование Настроек <a name="using-configurations"></a>
## Использование настроек <a name="using-configurations"></a>
Возможность настраивания широко используется в Yii. В самом начале данной главы мы увидели как
Возможность настройки широко используется в Yii. В самом начале данной главы мы узнали как
создать объект с необходимыми параметрами используя метод [[Yii::createObject()]].
В данном разделе речь пойдет о настройках приложения и настройках виджетов (widget) - два основных способа
В данном разделе речь пойдет о настройках приложения и настройках виджетов — двух основных способов
использования настроек.
### Настройки Приложения <a name="application-configurations"></a>
### Настройки приложения <a name="application-configurations"></a>
Настройки [приложения](structure-applications.md) пожалуй самые сложные из используемых в фреймворке.
Причина в том, что класс [[yii\web\Application|application]] содержит большое количество настраиваемых
свойств и событий. Важно отметить, что свойство приложения, именуемое [[yii\web\Application::components|components]]
может принимать массив из настроек(которые являются массивом) для создания компонентов, регистрируемых на уровне
приложения.
Пример настроек приложения для [простого шаблона приложения (basic application template)](start-basic.md).
свойств и событий. Более того, свойство приложения [[yii\web\Application::components|components]]
может принимать массив настроек для создания компонентов, регистрируемых на уровне приложения.
Пример настроек приложения для [шаблона приложения basic](start-basic.md).
```php
$config = [
......@@ -131,22 +126,21 @@ $config = [
```
Ключ `class` в данных настройках не указывается. Причина в том, что класс вызывается по полному имени во
[входном скрипте (entry script)](structure-entry-scripts.md):
[входном скрипте](structure-entry-scripts.md):
```php
(new yii\web\Application($config))->run();
```
Для более подробной документации о том как настроить свойство приложения `components` обратитесь к главам
[Приложения (Applications)](structure-applications.md) и [Service Locator](concept-service-locator.md).
Для более подробной документации о настройке свойства приложения `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::beginWidget()]]. Оба метода принимают настройки в виде массива:
```php
use yii\widgets\Menu;
......@@ -164,13 +158,13 @@ echo Menu::widget([
Данный код создает виджет `Menu` и устанавливает параметр виджета `activeItems` в значение false.
Также устанавливается параметр `items`, состоящий из элементов меню.
Обратите внимание что параметр `class` НЕ передается, т.к. полное имя уже указано.
Обратите внимание что параметр `class` НЕ передается, так как полное имя уже указано.
## Файлы Настроек <a name="configuration-files"></a>
Если настройки сложные, то такие настройки, как правило, разделяют по нескольким PHP файлам. Такие файлы называют
*файлами настроек* или *конфигурационными файлами*. Файл настроек возвращает (используя return) массив с настройками.
Если настройки сложные, то их, как правило, разделяют по нескольким PHP файлам. Такие файлы называют
*файлами настроек* или *конфигурационными файлами*. Файл настроек возвращает массив PHP с настройками.
Например, настройки приложения можно хранить в отдельном файле `web.php`, как показано ниже:
```php
......@@ -213,8 +207,7 @@ return [
];
```
Чтобы получить настройки, хранимые в файле, достаточно подключить файл с помощью `require`.
Пример:
Чтобы получить настройки, хранимые в файле, достаточно подключить файл с помощью `require`:
```php
$config = require('path/to/web.php');
......@@ -225,12 +218,12 @@ $config = require('path/to/web.php');
## Настройки по умолчанию <a name="default-configurations"></a>
Метод [[Yii::createObject()]] реализован с использованием [dependency injection container](concept-di-container.md).
Это позволяет указывать так называемые *настройки по умолчанию*, которые будут применены ВСЕМ экземплярам классов
во время их инициализации методом [[Yii::createObject()]].
Настройки по умолчанию указываются с помощью метода `Yii::$container->set()` в разделе [предварительной загрузки (bootstrapping)](runtime-bootstrapping.md).
Это позволяет указывать так называемые *настройки по умолчанию*, которые будут применены ко ВСЕМ экземплярам классов
во время их инициализации методом [[Yii::createObject()]]. Настройки по умолчанию указываются с помощью метода
`Yii::$container->set()` на этапе [предварительной загрузки](runtime-bootstrapping.md).
Например, если мы хотим изменить виджет [[yii\widgets\LinkPager]] так, чтобы все виджеты данного вида показывали
5 кнопок на странице вместо 10 (как это установлено изначально), то в нашем случае код будет таким:
Например, если мы хотим изменить виджет [[yii\widgets\LinkPager]] так, чтобы все виджеты данного вида показывали максимум
5 кнопок на странице вместо 10 (как это установлено изначально), можно использовать следующий код:
```php
\Yii::$container->set('yii\widgets\LinkPager', [
......@@ -242,13 +235,12 @@ $config = require('path/to/web.php');
указывать настройки `maxButtonCount`.
## Константы Окружения (Environment Constants) <a name="environment-constants"></a>
## Константы окружения <a name="environment-constants"></a>
Настройки могут различаться в зависимости от окружения, в котором происходит запуск приложения. Например,
в среде разработчика(development environment), вы используете базу данных `mydb_dev`, а на продакшн сервере базу данных
в окружении разработчика вы используете базу данных `mydb_dev`, а на продакшн сервере базу данных
`mydb_prod`. Для упрощения смены окружений в Yii существует константа `YII_ENV`. Вы можете указать её во
[входном скрипте (entry script)](structure-entry-scripts.md) своего приложения.
Пример:
[входном скрипте](structure-entry-scripts.md) своего приложения:
```php
defined('YII_ENV') or define('YII_ENV', 'dev');
......@@ -256,11 +248,10 @@ defined('YII_ENV') or define('YII_ENV', 'dev');
`YII_ENV` может принимать следующие значения:
- `prod`: production окружение, т.е. окружение для конечного сервера. Константа `YII_ENV_PROD` установится в значение true.
- `dev`: development окружение, т.е. окружение для разработки. Константа `YII_ENV_DEV` установится в значение true.
- `test`: testing окружение, т.е. окружения для тестирования. Константа `YII_ENV_TEST` установится в значение true.
По умолчанию константа `YII_ENV`, установлена в значение `prod`.
- `prod`: production окружение, т.е. окружение для конечного сервера. Константа `YII_ENV_PROD` установлена в true.
Значение по умолчанию.
- `dev`: development окружение, т.е. окружение для разработки. Константа `YII_ENV_DEV` установлена в true.
- `test`: testing окружение, т.е. окружения для тестирования. Константа `YII_ENV_TEST` установлена в true.
Используя эти константы вы можете изменить настройки в соответствии с вашим окружением.
Например, чтобы включить [отладочную панель и отладчик](tool-debugger.md) в development окружении вы можете использовать
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment