Yii
Last updated
Last updated
Yii - это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений. Слово Yii (произносится как Йи [ji:]) в китайском языке означает «простой и эволюционирующий». Также Yii может расшифровываться как акроним Yes It Is!
После установки Yii базовое приложение будет доступно либо по URL , либо по , в зависимости от настроек Web сервера. Данный раздел - общее введение в организацию кода, встроенный функционал и обработку обращений приложением Yii.
Ниже приведен список основных директорий и файлов вашего приложения (считаем, что приложение установлено в директорию basic):
В целом, приложение Yii можно разделить на две категории файлов: расположенные в basic/web и расположенные в других директориях. Первая категория доступна через Web (например, браузером), вторая не доступна извне и не должна быть доступной т.к. содержит служебную информацию.
1 Пользователь обращается к точке входа web/index.php. 2 Скрипт загружает конфигурацию configuration и создает экземпляр приложения для дальнейшей обработки запроса. 3 Приложение определяет маршрут запроса при помощи компонента приложения запрос. 4 Приложение создает экземпляр контроллера для выполнения запроса. 5 Контроллер, в свою очередь, создает действие и накладывает на него фильтры. 6 Если хотя бы один фильтр дает сбой, выполнение приложения останавливается. 7 Если все фильтры пройдены - приложение выполняется. 8 Действие загружает модель данных. Вероятнее всего из базы данных. 9 Действие генерирует вид, отображая в нем данные (в т.ч. и полученные из модели). 10 Сгенерированный вид приложения передается как компонент ответ. 11 Компонент "ответ" отправляет готовый результат работы приложения браузеру пользователя.
При создании видов, которые генерируют HTML страницы, важно кодировать и/или фильтровать данные, которые приходят от пользователей перед тем как их показывать. В противном случае ваше приложение может стать жертвой атаки типа межсайтовый скриптинг
Чтобы показать обычный текст, сначала кодируйте его с помощью yii\helpers\Html::encode(). В примере ниже имя пользователя кодируется перед выводом:
Чтобы показать HTML содержимое, используйте yii\helpers\HtmlPurifier для того, чтобы отфильтровать потенциально опасное содержимое. В примере ниже содержимое поста фильтруется перед показом:
тогда в api/controllers/*.php будут реалищованы методы actionIndex, actionError
Приложения это объекты, которые управляют всей структурой и жизненным циклом прикладной системы Yii. Каждая прикладная система Yii включает в себя один объект приложения, который создается во входном скрипте и глобально доступен через \Yii::$app.
Контроллеры состоят из действий, которые являются основными блоками, к которым может обращаться конечный пользователь и запрашивать исполнение того или иного функционала. В контроллере может быть одно или несколько действий.
где: class
- абсолютное имя класса создаваемого объекта
propertyName
- первоначальные значения свойств создаваемого объекта
on eventName
- указывают на то, какие обработчики должны быть прикреплены к событиям объекта. as behaviorName
- указывают на то, какие поведения должны быть внедрены в объект. Обратите внимание, что ключи массива начинаются с as ; а $behaviorConfig представляет собой конфигурацию для создания поведения, похожую на все остальные конфигурации.
Конфигурация приложения, пожалуй, самая сложная из используемых в фреймворке. Причина в том, что класс application содержит большое количество конфигурируемых свойств и событий. Более того, свойство приложения components может принимать массив с конфигурацией для создания компонентов, регистрируемых на уровне приложения.
Ключ class в данной конфигурации не указывается. Причина в том, что класс вызывается по полному имени во входном скрипте:
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
: используется для отображения представлений. Более детальная информация представлена в разделе Представления.
В Yii реализован архитектурный паттерн MVC, которая соответствует структуре директорий приложения. В директории models находятся , в views расположены , а в каталоге controllers все приложения.
В каждом приложении Yii есть точка входа в приложение, web/index.php
это единственный PHP-скрипт доступный для выполнения из Web. Он принимает входящий запрос и создает экземпляр . обрабатывает входящие запросы при помощи и отправляет запрос контроллеру. используются в для построения динамических интерфейсов сайта.
являются частью архитектуры MVC (Модель-Вид-Контроллер). Они представляют собой объекты бизнес данных, правил и логики.
- это часть MVC архитектуры, это код, который отвечает за представление данных конечным пользователям. В веб приложениях виды создаются обычно в виде видов - шаблонов, которые суть PHP скрипты, в основном содержащие HTML код и код PHP, отвечающий за представление и внешний вид. Виды управляются компонентом приложения view, который содержит часто используемые методы для упорядочивания видов и их рендеринга. Для упрощения, мы будем называть виды - шаблоны просто видами.
являются частью MVC архитектуры. Это объекты классов, унаследованных от yii\base\Controller, отвечающие за обработку запроса и генерирование ответа. В сущности, после обработки запроса приложениями, контроллеры проанализируют входные данные, передадут их в модели, вставят результаты модели в представления, и в конечном итоге сгенерируют исходящие ответы. Пример:
Behavior - поведения - позволяют расширить существующие компоненты, не изменяя дерево наследования
Данное свойство является наиболее важным. Оно позволяет вам зарегистрировать список именованных компонентов, называемых компоненты приложения, которые Вы можете использовать в других местах. Например,