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