Эти страницы используют смежный хидер (шапка сайта) и футер (подвал). В "шапке" находится главное меню, при помощи которого пользователь перемещается по сайту. В "подвале" - копирайт и общая информация.
Эти страницы используют смежный хидер (шапка сайта) и футер (подвал). В "шапке" находится главное меню, при помощи которого пользователь перемещается по сайту. В "подвале" - копирайт и общая информация.
В самой верхней части окна Вы будете видеть системные сообщения Yii - журнал, отладочная информация, сообщения об ошибках, запросы к базе данных и т.п. Выводом данной информации руководит [встроенный отладчик](tool-debugger.md), он записывает и отображает информацию о ходе выполнения приложения.
В самой верхней части окна Вы будете видеть системные сообщения Yii - журнал, отладочную информацию, сообщения об ошибках, запросы к базе данных и т.п. Выводом данной информации руководит [встроенный отладчик](tool-debugger.md), он записывает и отображает информацию о ходе выполнения приложения.
Структура приложения Yii <a name="application-structure"></a>
Структура приложения Yii <a name="application-structure"></a>
---------------------
---------------------
Ниже приведен список основных директорий и файлов вашего приложения The most important directories and files in your application are (assuming the application's root directory is`basic`):
Ниже приведен список основных директорий и файлов вашего приложения (считаем, что приложение установлено в директорию`basic`):
```
```
basic/ application base path
basic/ корневой каталог приложения
composer.json used by Composer, describes package information
composer.json используется Composer'ом, содержит описание приложения
config/ contains application and other configurations
config/ конфигурационные файлы
console.php the console application configuration
console.php конфигурация консольного приложения
web.php the Web application configuration
web.php конфигурация Web приложения
commands/ contains console command classes
commands/ содержит классы консольных команд
controllers/ contains controller classes
controllers/ контроллеры
models/ contains model classes
models/ модели
runtime/ contains files generated by Yii during runtime, such as logs and cache files
runtime/ файлы, которые генерирует Yii во время выполнения приложения (логи, кеш и т.п.)
vendor/ contains the installed Composer packages, including the Yii framework itself
vendor/ содержит пакеты Composer'а и, собственно, сам фреймворк Yii
views/ contains view files
views/ виды приложения
web/ application Web root, contains Web accessible files
web/ корневая директория Web приложения. Содержит файлы, доступные через Web
assets/ contains published asset files (js, css) by Yii
index.php the entry (or bootstrap) script for the application
index.php точка входа в приложение Yii. С него начинается выполнение приложения
yii the Yii console command execution script
yii скрипт выполнения консольного приложения Yii
```
```
In general, the files in the application can be divided into two types: those under `basic/web` and those
В целом, приложение Yii можно разделить на две категории файлов: расположенные в `basic/web` и расположенные в других директориях. Первая категория доступна через Web (например, браузером), вторая не доступна из вне и не должна быть доступной т.к. содержит служебную информацию.
under other directories. The former can be directly accessed from via HTTP (i.e., in a browser), while the latter can not and should not be.
Yii implements the [model-view-controller (MVC)](http://wikipedia.org/wiki/Model-view-controller) design pattern,
В Yii реализована схема проектирования [модель-вид-контроллер (MVC)](http://http://ru.wikipedia.org/wiki/Model-View-Controller),
which is reflected in the above directory organization. The `models` directory contains all [model classes](structure-models.md),
которая соответствует структуре директорий приложения. В директории `models` находятся [Модели](structure-models.md),
the `views` directory contains all [view scripts](structure-views.md), and the `controllers` directory contains
в `views` расположены [Виды](structure-views.md), а в каталоге `controllers` все [Контроллеры](structure-controllers.md) приложения.
all [controller classes](structure-controllers.md).
The following diagram shows the static structure of an application.
Диаграмма ниже демонстрирует внутреннее устройство приложения.
![Static Structure of Application](images/application-structure.png)
![внутреннее устройство приложения](images/application-structure.png)
Each application has an entry script `web/index.php` which is the only Web accessible PHP script in the application.
В каждом приложении Yii есть точка входа в приложение, `web/index.php` это единственный PHP-скрипт доступный для выполнения из Web. Он принимает входящий запрос и создает экземпляр [приложения](structure-applications.md).
The entry script takes an incoming request and creates an [application](structure-applications.md) instance to handle it.
[Приложение](structure-applications.md) обрабатывает входящие запросы при помощи [компонентов](concept-components.md) и отправляет запрос контроллеру. [Виджеты](structure-widgets.md) используются в [Видах](structure-views.md) для построения динамических интерфейсов сайта.
The [application](structure-applications.md) resolves the request with the help of its [components](concept-components.md),
and dispatches the request to the MVC elements. [Widgets](structure-widgets.md) are used in the [views](structure-views.md)
to help build complex and dynamic user interface elements.
![Жизненный цикл запроса](images/application-lifecycle.png)
1. A user makes a request to the [entry script](structure-entry-scripts.md)`web/index.php`.
1. Пользователь обращается к [точке входа](structure-entry-scripts.md)`web/index.php`.
2. The entry script loads the application [configuration](concept-configurations.md) and creates
2. Скрипт загружает конфигурацию [configuration](concept-configurations.md) и создает экземпляр [приложения](structure-applications.md) для дальнейшей обработки запроса.
an [application](structure-applications.md) instance to handle the request.
3. Приложение определяет [маршрут](runtime-routing.md) запроса при помощи компонента приложения [запрос](runtime-requests.md).
3. The application resolves the requested [route](runtime-routing.md) with the help of
4. Приложение создает экземпляр [контроллера](structure-controllers.md) для выполнения запроса.
the [request](runtime-requests.md) application component.
5. Контроллер, в свою очередь, создает [действие](structure-controllers.md) и накладывает на него фильтры.
4. The application creates a [controller](structure-controllers.md) instance to handle the request.
6. Если хотя бы один фильтр дает сбой выполнение приложения останавливается.
5. The controller creates an [action](structure-controllers.md) instance and performs the filters for the action.
7. Если все фильтры пройдены - приложение выполняется.
6. If any filter fails, the action is cancelled.
8. Действие загружает модель данных. Вероятнее всего из базы данных.
7. If all filters pass, the action is executed.
9. Действие генерирует вид, отображая в нем данные (в т.ч. и полученные из модели).
8. The action loads a data model, possibly from a database.
10. Сгенерированный вид приложения передается как компонент [ответ](runtime-responses.md).
9. The action renders a view, providing it with the data model.
11. Компонент "ответ" отправляет готовый результат работы приложения браузеру пользователя.
10. The rendered result is returned to the [response](runtime-responses.md) application component.
11. The response component sends the rendered result to the user's browser.