Commit b4856ced by keltstr Committed by Alexander Makarov

Update Russian translation of structure-applications.md

parent c55186cc
...@@ -2,11 +2,10 @@ ...@@ -2,11 +2,10 @@
========== ==========
Приложения это объекты, которые управляют всей структурой и жизненным циклом прикладной системы Yii. Приложения это объекты, которые управляют всей структурой и жизненным циклом прикладной системы Yii.
Каждая Yii прикладная система включает в себя один объект приложения, который создается в [входном скрипте](structure-entry-scripts.md) Каждая Yii прикладная система включает в себя один объект приложения, который создается во [входном скрипте](structure-entry-scripts.md) и глобально доступен через `\Yii::$app`.
и глобально доступен через `\Yii::$app`.
> Информация: В зависимости от контекста, когда мы говорим "приложение", это может означать как объект приложения так и > Информация: В зависимости от контекста, когда мы говорим "приложение", это может означать как объект приложения так и
прикладную систему приложения в целом. приложение как прикладную систему в целом.
Существует два вида приложений: [[yii\web\Application|веб приложения]] и [[yii\console\Application|консольные приложения]]. Существует два вида приложений: [[yii\web\Application|веб приложения]] и [[yii\console\Application|консольные приложения]].
Как можно догадаться по названию, первый тип в основном занимается обработкой веб запросов, в то время как последний - консольных команд. Как можно догадаться по названию, первый тип в основном занимается обработкой веб запросов, в то время как последний - консольных команд.
...@@ -14,7 +13,7 @@ ...@@ -14,7 +13,7 @@
## Конфигурации приложения <a name="application-configurations"></a> ## Конфигурации приложения <a name="application-configurations"></a>
Когда [входной скрипт](structure-entry-scripts.md создает приложение, он загрузит [конфигурацию](concept-configurations.md) Когда [входной скрипт](structure-entry-scripts.md) создает приложение, он загрузит [конфигурацию](concept-configurations.md)
и применит ее к приложению, например: и применит ее к приложению, например:
```php ```php
...@@ -29,8 +28,7 @@ $config = require(__DIR__ . '/../config/web.php'); ...@@ -29,8 +28,7 @@ $config = require(__DIR__ . '/../config/web.php');
``` ```
Также как и обычные [конфигурации](concept-configurations.md), конфигурации приложения указывают как следует инициализировать Также как и обычные [конфигурации](concept-configurations.md), конфигурации приложения указывают как следует инициализировать
свойства объектов приложения. Из-за того, что конфигурации приложений часто являются сложными, они разбиваются на несколько свойства объектов приложения. Из-за того, что конфигурация приложения часто является очень сложной, она разбивается на несколько [конфигурационных файлов](concept-configurations.md#configuration-files), например, `web.php` - файл в приведенном выше примере.
[конфигурационных файлов](concept-configurations.md#configuration-files), например, `web.php` файл в приведенном выше примере.
## Свойства приложений <a name="application-properties"></a> ## Свойства приложений <a name="application-properties"></a>
...@@ -55,29 +53,25 @@ $config = require(__DIR__ . '/../config/web.php'); ...@@ -55,29 +53,25 @@ $config = require(__DIR__ . '/../config/web.php');
#### [[yii\base\Application::basePath|basePath]] <a name="basePath"></a> #### [[yii\base\Application::basePath|basePath]] <a name="basePath"></a>
Свойство [[yii\base\Application::basePath|basePath]] указывает на корневую папку приложения. Это папка, которая содержит Свойство [[yii\base\Application::basePath|basePath]] указывает на корневую директорию приложения. Эта директория содержит
весь код прикладной системы приложения. В данной папке обычно могут находится подпапки `models`, `views`, `controllers`, которые весь защищенный исходный код приложения. В данной директории обычно могут находится поддиректории `models`, `views`, `controllers`, содержащие код, соответствующий шаблону проектирования MVC.
содержат код, отвечающий шаблону проектирования MVC.
Вы можете настроить свойство [[yii\base\Application::basePath|basePath]] указав напрямую путь к каталогу через Вы можете задать свойство [[yii\base\Application::basePath|basePath]] используя путь к директории или используя
[псевдонимы пути](concept-aliases.md). В обоих случаях, указанная папка должна существовать, иначе будет брошено исключение. [псевдоним пути](concept-aliases.md). В обоих случаях, указанная директория должна существовать, иначе будет выброшено исключение. Путь будет нормализован функцией `realpath()`.
Путь будет нормализован с помощью вызова функции `realpath()`.
Свойство [[yii\base\Application::basePath|basePath]] часто используется для получения других важных путей, например, путь к Свойство [[yii\base\Application::basePath|basePath]] часто используется для указания других важных путей (например, путь к
runtime папке, которая используется в процессе работы приложения. Именно по этой причине, псевдоним пути `@app` является директории runtime, используемой приложением). По этой причине, псевдоним пути `@app` предустановлен и содержит данный путь. Производные пути могут быть получены с использованием этого псевдонима пути (например, `@app/runtime` указывает на времененную исполняемую(runtime) дирректорию).
предопределенным и указывает на данную папку. Другие пути могут быть получены с помощью использования псевдонима пути, например,
`@app/runtime`.
### Важные свойства <a name="important-properties"></a> ### Важные свойства <a name="important-properties"></a>
Свойства, указанные в этом подразделе, часто должны быть настроены т. к. они могут отличаться от приложения к приложению. Свойства, указанные в этом подразделе, часто нуждаются в преднастройке т.к. они разнятся от приложения к приложению.
#### [[yii\base\Application::aliases|aliases]] <a name="aliases"></a> #### [[yii\base\Application::aliases|aliases]] <a name="aliases"></a>
Это свойство позволяет настроить вам множество [псевдонимов](concept-aliases.md) в рамках массива. Это свойство позволяет настроить вам множество [псевдонимов](concept-aliases.md) в рамках массива.
Ключами массива являются имена псевдонимов, а ключами - соответствующие значение пути. Например, Ключами массива являются имена псевдонимов, а значениями массива - соответствующие значения пути. Например,
```php ```php
[ [
...@@ -88,7 +82,7 @@ runtime папке, которая используется в процессе ...@@ -88,7 +82,7 @@ runtime папке, которая используется в процессе
] ]
``` ```
Это свойство доступно таким образом, чтобы вы могли указывать псевдонимы в рамках конфигураций приложения, Это свойство доступно таким образом, чтобы вы могли указывать псевдонимы в рамках конфигурации приложения,
а не вызовов метода [[Yii::setAlias()]]. а не вызовов метода [[Yii::setAlias()]].
...@@ -105,7 +99,8 @@ ID в качестве элемента данного свойства. ...@@ -105,7 +99,8 @@ ID в качестве элемента данного свойства.
- ID, указанный в [компонентах](#components); - ID, указанный в [компонентах](#components);
- ID модуля, указанный в [модулях](#modules); - ID модуля, указанный в [модулях](#modules);
- название класса; - название класса;
- массив конфигурации. - массив конфигурации;
- анонимная функция, которая создает и возвращает компонент.
Например, Например,
...@@ -116,19 +111,31 @@ ID в качестве элемента данного свойства. ...@@ -116,19 +111,31 @@ ID в качестве элемента данного свойства.
'demo', 'demo',
// название класса // название класса
'app\components\TrafficMonitor', 'app\components\Profiler',
// массив конфигурации // массив конфигурации
[ [
'class' => 'app\components\Profiler', 'class' => 'app\components\Profiler',
'level' => 3, 'level' => 3,
] ],
// анонимная функция
function () {
return new app\components\Profiler();
}
], ],
] ]
``` ```
> Info: Если идентификатор(ID) модуля такой же, как идентификатор компонента приложения, то в процессе [начальной загрузки](runtime-bootstrapping.md) будет использован компонент приложения. Если Вы вместо этого хотите использовать модуль, то можете указать его при помощью анонимной функции похожей на эту:
>```php
[
function () {
return Yii::$app->getModule('user');
},
]
```
В процессе начальной загрузки, каждый компонент будет создан. Если класс компонента имеет интерфейс [[yii\base\BootstrapInterface]], то В процессе [начальной загрузки](runtime-bootstrapping.md), каждый компонент будет создан. Если класс компонента имеет интерфейс [[yii\base\BootstrapInterface]], то также будет вызван метод [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]].
также будет вызван метод [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]].
Еще одним практическим примером является конфигурация [базового шаблона приложения](start-installation.md), в котором Еще одним практическим примером является конфигурация [базового шаблона приложения](start-installation.md), в котором
модули `debug` и `gii` указаны как `bootstrap` компоненты, когда приложение находится в отладочном режиме. модули `debug` и `gii` указаны как `bootstrap` компоненты, когда приложение находится в отладочном режиме.
...@@ -144,19 +151,17 @@ if (YII_ENV_DEV) { ...@@ -144,19 +151,17 @@ if (YII_ENV_DEV) {
} }
``` ```
> Примечание: Указывание слишком большого количества компонентов в `bootstrap` приведет к снижению производительности приложения, > Примечание: Указывание слишком большого количества компонентов в [`bootstrap`](runtime-bootstrapping.md) приведет к снижению производительности приложения,
потому что для каждого запроса одно и то же количество компонентов должно быть загружено. Таким образом вы должны использовать потому что для каждого запроса одно и то же количество компонентов должно быть загружено. Таким образом вы должны использовать
начальную загрузку разумно. начальную загрузку разумно.
#### [[yii\web\Application::catchAll|catchAll]] <a name="catchAll"></a> #### [[yii\web\Application::catchAll|catchAll]] <a name="catchAll"></a>
Данное свойство поддерживается только [[yii\web\Application|веб приложениями]].Оно указывает [действие контроллера](structure-controllers.md), Данное свойство поддерживается только [[yii\web\Application|веб приложениями]].Оно указывает [действие контроллера](structure-controllers.md), которое должно обрабатывать все входящие запросы от пользователя. В основном это используется, когда приложения находится в режиме обслуживания и должно обрабатывать все запросы через одно действие.
которое должно обрабатывать все входящие запросы от пользователя. В основном это используется, когда приложения находится в
режиме обслуживания и должно обрабатывать все запросы через одно действие.
Конфигурация это массив, первый элемент которого, указывает маршрут действия. Остальные элементы в формате ключ-значение Конфигурация это массив, первый элемент которого, определяет маршрут действия. Остальные элементы в формате пара ключ-значение задают дополнительные параметры, которые должны быть переданы действию (методу контроллера actionXXX).
указывают дополнительные параметры, которые должны быть переданы действию. Например, Например,
```php ```php
[ [
...@@ -171,8 +176,8 @@ if (YII_ENV_DEV) { ...@@ -171,8 +176,8 @@ if (YII_ENV_DEV) {
#### [[yii\base\Application::components|components]] <a name="components"></a> #### [[yii\base\Application::components|components]] <a name="components"></a>
Данное свойство является наиболее важным. Оно позволяет вам указать список компонентов, которые называются [компоненты приложения](#structure-application-components.md), Данное свойство является наиболее важным. Оно позволяет вам зарегистрировать список именованных компонентов, называемых [компоненты приложения](#structure-application-components.md), которые Вы можете использовать в других местах.
которые вы можете использовать в других местах. Например, Например,
```php ```php
[ [
...@@ -188,22 +193,16 @@ if (YII_ENV_DEV) { ...@@ -188,22 +193,16 @@ if (YII_ENV_DEV) {
] ]
``` ```
Каждый компонент приложения указан массивом в формате ключ-значение. Ключ представляет собой ID компонента приложения, в то время Каждый компонент приложения указан массивом в формате ключ-значение. Ключ представляет собой ID компонента приложения, в то время как значение представляет собой название класса или [конфигурацию](concept-configurations.md).
как значение представляет собой название класса или [конфигурацию](concept-configurations.md).
Вы можете зарегистрировать любой компонент в приложении, позже этот компонент будет глобально доступен Вы можете зарегистрировать любой компонент в приложении, позже этот компонент будет глобально доступен через выражение `\Yii::$app->ComponentID`.
через выражение `\Yii::$app->ComponentID`.
Более детальная информация приведена в разделе [Компоненты приложения](structure-application-components.md). Более подробная информация приведена в разделе [Компоненты приложения](structure-application-components.md).
#### [[yii\base\Application::controllerMap|controllerMap]] <a name="controllerMap"></a> #### [[yii\base\Application::controllerMap|controllerMap]] <a name="controllerMap"></a>
Данное свойство позволяет вам устанавливать соответствия между ID контроллера и его классом. По-умолчанию, Yii устанавливает Данное свойство позволяет вам задавать соответствия(mapping) между ID контроллера и произвольным классом контроллера. По-умолчанию, Yii задает соответствие между ID контроллера и его классом согласно данному [соглашению](#controllerNamespace) (таким образом, ID `post` будет соответствовать `app\controllers\PostController` ). Задавая эти свойства вы можете переопределить соответствия для необходимых контроллеров. В приведенном ниже примере, `account` будет соответствовать контроллеру `app\controllers\UserController`, в то время как `article` будет соответствовать контроллеру `app\controllers\PostController`.
соответствие между ID контроллера и его классом согласно данному [соглашению](#controllerNamespace) (таким образом,
ID `post` будет соответствовать `app\controllers\PostController` ). С помощью настройки этого свойства вы можете изменить
соглашение для нужных контроллеров. В приведенном ниже примере, `account` будет соответствовать `app\controllers\UserController`,
в то время как `article` будет соответствовать `app\controllers\PostController`.
```php ```php
[ [
...@@ -219,8 +218,8 @@ ID `post` будет соответствовать `app\controllers\PostControl ...@@ -219,8 +218,8 @@ ID `post` будет соответствовать `app\controllers\PostControl
] ]
``` ```
Ключами данного свойства являются ID контроллеров, а значениями являются название Ключами данного свойства являются ID контроллеров, а значениями являются соответствующие названия
класса контроллера или [конфигурация](concept-configurations.md). классов(полное название класса с пространством имен) контроллера или [конфигурация](concept-configurations.md).
#### [[yii\base\Application::controllerNamespace|controllerNamespace]] <a name="controllerNamespace"></a> #### [[yii\base\Application::controllerNamespace|controllerNamespace]] <a name="controllerNamespace"></a>
...@@ -229,14 +228,12 @@ ID `post` будет соответствовать `app\controllers\PostControl ...@@ -229,14 +228,12 @@ ID `post` будет соответствовать `app\controllers\PostControl
По-умолчанию значение равно `app\controllers`. Если ID контроллера `post`, то согласно соглашению, соответствующий класс По-умолчанию значение равно `app\controllers`. Если ID контроллера `post`, то согласно соглашению, соответствующий класс
контроллера (без пространства имен) будет равен `PostController`, а полное название класса будет равно `app\controllers\PostController`. контроллера (без пространства имен) будет равен `PostController`, а полное название класса будет равно `app\controllers\PostController`.
Класс контроллера может также находиться в подпапке папки, которая соответствует этому пространству имен. Класс контроллера может также находиться в поддиректории директории, соответствующей этому пространству имен.
Например, дан ID контроллера `admin/post`, соответствующие полное имя класса контроллера будет `app\controllers\admin\PostController`. Например, ID контроллера `admin/post`, будет соответветствовать полное имя класса контроллера `app\controllers\admin\PostController`.
Очень важно, чтобы полное имя класса контроллера могло быть использовано [автозагрузкой](concept-autoloading.md) и соответствующее Очень важно, чтобы полное имя класса контроллера могло быть использовано [автозагрузкой](concept-autoloading.md) и соответствующее пространство имен вашего контроллера соответствовало данному свойству. Иначе, Вы получите ошибку "Страница не найдена", при доступе к приложению.
пространство имен вашего контроллера соответствовало данному свойству. Иначе, вы получите ошибку "Страница не найдена", когда
попытаетесь получить доступ к приложению.
В случае, если вы хотите изменить соглашение как описано выше, вы можете использовать свойство [controllerMap](#controllerMap). В случае, если вы хотите переопределить соответствия как описано выше, вы можете настроить свойство [controllerMap](#controllerMap).
#### [[yii\base\Application::language|language]] <a name="language"></a> #### [[yii\base\Application::language|language]] <a name="language"></a>
......
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