Запуск додатка
Після встановлення Yii, базовий додаток буде доступний або по URL http://hostname/basic/web/index.php
,
або по http://hostname/index.php
, в залежності від налаштування Web сервера. Даний розділ - загальне введення в
організацію коду, вбудований функціонал і опрацювання запитів додатком Yii.
Інформація: Для спрощення, далі в даному посібнику передбачається, що Yii встановлений в директорію
basic/web
, яка, в свою чергу, встановлена, як коренева директорія в налаштуваннях Web сервера. В результаті, звернувшись до URLhttp://hostname/index.php
ви отримаєте доступ до додатку. Відрегулюйте URL-адреси для ваших потреб.
Функціонал
Вбудований шаблон простого додатку складається з чотирьох сторінок:
- домашня сторінка, відображається при переході по URL
http://hostname/index.php
- "About" ("Про нас")
- на сторінці "Contact" знаходиться форма зворотнього зв’язку, на якій користувач може звернутися до розробника по e-mail
- на сторінці "Login" відображається форма авторизації. Спробуйте авторизуватись з логіном/паролем "admin/admin". Зверніть увагу на зміну розділу "Login" в головному меню на "Logout".
Ці сторінки використовують спільний хедер (шапка сайта) і футер (підвал). В "шапці" знаходиться головне меню, за допомогою якого користувач переміщається по сайту.
У нижній частині вікна ви зможете бачити системні повідомлення Yii - журнал, відлагоджувальну інформацію, повідомлення про помилки, запити до бази даних і т.п. Відображенням данної інформацію керує вбудований відладчик, він записує і відображає інформацію про хід виконання додатку.
Структура додатка Yii
Нижче наведений перелік основних директорій і файлів вашого додатку (вважаємо, що додаток встановлений в директорію basic
):
basic/ кореневий каталог додатка
composer.json використовується Composer'ом, містить опис додатку
config/ конфігураційні файли
console.php конфігурація консольного додатка
web.php конфігурація Web додатка
commands/ містить класи консольних команд
controllers/ контролери
models/ моделі
runtime/ файли, які генерує Yii під час виконання додатку (логи, кеш і т.п.)
vendor/ містить пакунки Composer'а і, власне, сам фреймворк Yii
views/ представлення додатку
web/ коренева директорія Web додатку. Містить файли, доступні через Web
assets/ скрипти, які використовуються додатком (js, css)
index.php місце входження в додаток Yii. З нього розпочинається виконання додатку
yii скрипт виконання консольного додатку Yii
В цілому, додаток Yii можна розділити на дві категорії файлів: розміщенні в basic/web
і розміщенні в інших директоріях.
Перша категорія доступна через HTTP (наприклад, браузером), друга недоступна зовні, та і не повинна бути, так як містить службову інформацію.
В Yii реалізована схема проектування модель-представлення-контролер (MVC),
яка відповідає структурі директорій додатка. В директорії models
знаходяться класи моделей,
в views
розміщені скрипти представлень, а в каталозі controllers
всі класи контролерів додатка.
Діаграма нижче демонструє статичну структуру додатка.
В кожному додатку Yii є місце входження в додаток, web/index.php
- це єдиний PHP-скрипт доступний для виконання через Web.
Він отримує вхідний запит і створює екземпляр додатку. Додаток
опрацьовує вхідні запити з допомогою компонентів і відправляє запит контролеру.
Віджети використовуються у представленнях для побудови динамічних інтерфейсів сайта.
Життєвий цикл запиту
На діаграмі показано, як додаток відпрацьовує запит.
- Користувач робить запит до місця входження
web/index.php
. - Скрипт завантажує конфігурацію configuration і створює екземпляр додатку для наступного опрацювання запиту.
- Додаток визначає маршрут запиту за допомогою компонента запиту додатка.
- Додаток створює екземпляр контролера для виконання запиту.
- Контролер, в свою чергу, створює дію і накладає на неї фільтри.
- Якщо хоч один фільтр поверне помилку - виконання додатку зупиняється.
- Якщо всі фільтри пройдені - додаток виконується.
- Дія завантажує модель даних. Скоріше за все із бази даних.
- Дія генерує представлення, відображаючи в ньому дані (в т.ч. і отримані із моделі).
- Згенерований вид додатку передається як компонент відповіді.
- Компонент "відповіді" відправляє готовий результат роботи додатку браузеру користувача.