Yii
About
Yii - это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений. Слово Yii (произносится как Йи [ji:]) в китайском языке означает «простой и эволюционирующий». Также Yii может расшифровываться как акроним Yes It Is!
После установки Yii базовое приложение будет доступно либо по URL http://hostname/basic/web/index.php, либо по http://hostname/index.php, в зависимости от настроек Web сервера. Данный раздел - общее введение в организацию кода, встроенный функционал и обработку обращений приложением Yii.
Yii Security Best Practice
https://www.yiiframework.com/doc/guide/2.0/en/security-best-practices
Example App
https://github.com/yii2-starter-kit/yii2-starter-kit
Структура проекта
Источник Ниже приведен список основных директорий и файлов вашего приложения (считаем, что приложение установлено в директорию basic):
Внутреннее устройство приложения
В целом, приложение Yii можно разделить на две категории файлов: расположенные в basic/web и расположенные в других директориях. Первая категория доступна через Web (например, браузером), вторая не доступна извне и не должна быть доступной т.к. содержит служебную информацию.
В Yii реализован архитектурный паттерн MVC, которая соответствует структуре директорий приложения. В директории models находятся Модели, в views расположены Виды, а в каталоге controllers все Контроллеры приложения.
В каждом приложении Yii есть точка входа в приложение, web/index.php
это единственный PHP-скрипт доступный для выполнения из Web. Он принимает входящий запрос и создает экземпляр приложения. Приложение обрабатывает входящие запросы при помощи компонентов и отправляет запрос контроллеру. Виджеты используются в Видах для построения динамических интерфейсов сайта.
Жизненный цикл пользовательского запроса
1 Пользователь обращается к точке входа web/index.php. 2 Скрипт загружает конфигурацию configuration и создает экземпляр приложения для дальнейшей обработки запроса. 3 Приложение определяет маршрут запроса при помощи компонента приложения запрос. 4 Приложение создает экземпляр контроллера для выполнения запроса. 5 Контроллер, в свою очередь, создает действие и накладывает на него фильтры. 6 Если хотя бы один фильтр дает сбой, выполнение приложения останавливается. 7 Если все фильтры пройдены - приложение выполняется. 8 Действие загружает модель данных. Вероятнее всего из базы данных. 9 Действие генерирует вид, отображая в нем данные (в т.ч. и полученные из модели). 10 Сгенерированный вид приложения передается как компонент ответ. 11 Компонент "ответ" отправляет готовый результат работы приложения браузеру пользователя.
Составные части приложения на Yii
Модели
Модели являются частью архитектуры MVC (Модель-Вид-Контроллер). Они представляют собой объекты бизнес данных, правил и логики.
Виды
Виды - это часть MVC архитектуры, это код, который отвечает за представление данных конечным пользователям. В веб приложениях виды создаются обычно в виде видов - шаблонов, которые суть PHP скрипты, в основном содержащие HTML код и код PHP, отвечающий за представление и внешний вид. Виды управляются компонентом приложения view, который содержит часто используемые методы для упорядочивания видов и их рендеринга. Для упрощения, мы будем называть виды - шаблоны просто видами.
При создании видов, которые генерируют HTML страницы, важно кодировать и/или фильтровать данные, которые приходят от пользователей перед тем как их показывать. В противном случае ваше приложение может стать жертвой атаки типа межсайтовый скриптинг
Чтобы показать обычный текст, сначала кодируйте его с помощью yii\helpers\Html::encode(). В примере ниже имя пользователя кодируется перед выводом:
Чтобы показать HTML содержимое, используйте yii\helpers\HtmlPurifier для того, чтобы отфильтровать потенциально опасное содержимое. В примере ниже содержимое поста фильтруется перед показом:
Контроллеры
Контроллеры являются частью MVC архитектуры. Это объекты классов, унаследованных от yii\base\Controller, отвечающие за обработку запроса и генерирование ответа. В сущности, после обработки запроса приложениями, контроллеры проанализируют входные данные, передадут их в модели, вставят результаты модели в представления, и в конечном итоге сгенерируют исходящие ответы. Пример:
тогда в api/controllers/*.php будут реалищованы методы actionIndex, actionError
Приложения
Приложения это объекты, которые управляют всей структурой и жизненным циклом прикладной системы Yii. Каждая прикладная система Yii включает в себя один объект приложения, который создается во входном скрипте и глобально доступен через \Yii::$app.
Контроллеры состоят из действий, которые являются основными блоками, к которым может обращаться конечный пользователь и запрашивать исполнение того или иного функционала. В контроллере может быть одно или несколько действий.
Поведения
Behavior - поведения - позволяют расширить существующие компоненты, не изменяя дерево наследования https://www.yiiframework.com/doc/guide/2.0/ru/concept-behaviors
Виджеты
Компоненты
Конфигурация
https://www.yiiframework.com/doc/guide/2.0/ru/concept-configurations
Общий формат конфигураций:
где: class
- абсолютное имя класса создаваемого объекта
propertyName
- первоначальные значения свойств создаваемого объекта
on eventName
- указывают на то, какие обработчики должны быть прикреплены к событиям объекта. as behaviorName
- указывают на то, какие поведения должны быть внедрены в объект. Обратите внимание, что ключи массива начинаются с as ; а $behaviorConfig представляет собой конфигурацию для создания поведения, похожую на все остальные конфигурации.
Пример конфигурации приложения
Конфигурация приложения, пожалуй, самая сложная из используемых в фреймворке. Причина в том, что класс application содержит большое количество конфигурируемых свойств и событий. Более того, свойство приложения components может принимать массив с конфигурацией для создания компонентов, регистрируемых на уровне приложения.
Ключ class в данной конфигурации не указывается. Причина в том, что класс вызывается по полному имени во входном скрипте:
Про components
components
https://www.yiiframework.com/doc/guide/2.0/ru/structure-application-components Данное свойство является наиболее важным. Оно позволяет вам зарегистрировать список именованных компонентов, называемых компоненты приложения, которые Вы можете использовать в других местах. Например,
Каждый компонент приложения указан массивом в формате ключ-значение. Ключ представляет собой ID компонента приложения, в то время как значение представляет собой название класса или конфигурацию.
У каждого приложения есть базовые компоненты
assetManager
: используется для управления и опубликования ресурсов приложения. Более детальная информация представлена в разделе Ресурсы;db
: представляет собой соединение с базой данных, через которое вы можете выполнять запросы. Обратите внимание, что когда вы конфигурируете данный компонент, вы должны указать класс компонента также как и остальные необходимые параметры, такие как yii\db\Connection::$dsn. Более детальная информация представлена в разделе Объекты доступа к данным (DAO);errorHandler
: осуществляет обработку PHP ошибок и исключений. Более детальная информация представлена в разделе Обработка ошибок;formatter
: форматирует данные для отображения их конечному пользователю. Например, число может быть отображено с различными разделителями, дата может быть отображена в формате long. Более детальная информация представлена в разделе Форматирование данных;i18n
: используется для перевода сообщений и форматирования. Более детальная информация представлена в разделе Интернационализация;log
: обработка и маршрутизация логов. Более детальная информация представлена в разделе Логирование;yii\swiftmailer\Mailer
: предоставляет возможности для составления и рассылки писем. Более детальная информация представлена в разделе Отправка почты;response
: представляет собой данные от сервера, которые будет направлены пользователю. Более детальная информация представлена в разделе Ответы;request
: представляет собой запрос, полученный от конечных пользователей. Более детальная информация представлена в разделе Запросы;session
: информация о сессии. Данный компонент доступен только в веб приложениях. Более детальная информация представлена в разделе Сессии и куки;urlManager
: используется для разбора и создания URL. Более детальная информация представлена в разделе Разбор и генерация URL;user
: представляет собой информацию аутентифицированного пользователя. Данный компонент доступен только в веб приложениях. Более детальная информация представлена в разделе Аутентификация;view
: используется для отображения представлений. Более детальная информация представлена в разделе Представления.
Last updated