Знайомимося із Yii ================== У даному розділі ми опишемо створення основи додатка, яка буде слугувати нашою відправною точкою. Для простоти, приймемо, що коренева директорія нашого веб-сервера — `/wwwroot`, а відповідна їй URL-адреса — `http://www.example.com/`. Встановлення Yii ---------------- Спочатку ми встановимо фреймворк. Завантажимо дистрибутив фреймворку (версії 1.1.1 або вище) з сайту [www.yiiframework.com](http://www.yiiframework.com/download) і розпакуємо в директорію `/wwwroot/yii`. Переконаємося, що отримали директорію `/wwwroot/yii/framework`. > Tip|Підказка: Фреймворк Yii може бути встановлений в будь-якому місці файлової системи, не обовʼязково в `wwwroot`. Директорія `framework` містить весь код фреймворку і є єдиною та необхідною при розгортанні додатка. Одна копія Yii може використовуватися декількома додатками. Після встановлення Yii відкриємо вікно браузера і перейдемо за адресою `http://www.example.com/yii/requirements/index.php`. Ми побачимо аналізатор вимог, що поставляється разом із релізом Yii. Для блогу, крім того, що потребує сам фреймворк, для доступу до БД SQLite нам знадобляться розширення PHP `pdo` та `pdo_sqlite`. Створення основи додатка ------------------------ Скористаємося утилітою командного рядка `yiic`, що йде в комплекті з фреймворком, для створення основи додатка в директорії `/wwwroot/blog`. `yiic` може бути використана для генерації коду, що дозволяє зменшити обсяг повторюваного коду, який набирається вручну. Відкриємо вікно командного рядка і виконаємо наступну команду: ~~~ % /wwwroot/yii/framework/yiic webapp /wwwroot/blog Create a Web application under '/wwwroot/blog'? [Yes|No]y … ~~~ > Tip|Підказка: Щоб використовувати утиліту `yiic` як показано вище, шлях до PHP повинен бути прописаний в системній змінній PATH. > Якщо це не так, то ми можемо використовувати наступну команду: > >~~~ > шлях/до/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog >~~~ Спробуємо запустити щойно створений додаток. Відкриємо браузер і перейдемо за адресою `http://www.example.com/blog/index.php`. Ми повинні побачити, що згенерована заготовка вже має 4 повнофункціональних сторінки: «Головна», «Про проект», «Контакти» і «Вхід». Нижче ми коротко опишемо, що саме ми отримали. ###Вхідний скрипт У нас є файл [вхідного скрипта](/doc/guide/uk/basics.entry) `/wwwroot/blog/index.php`: ~~~ [php] run(); ~~~ Це єдиний скрипт, до якого користувачі мають прямий доступ. Спочатку скрипт підключає файл початкового завантаження `yii.php`. Потім створює екземпляр [додатка](/doc/guide/uk/basics.application) із заданими налаштуваннями і виконує додаток. ###Базова директорія додатку Також, у нас є [базова директорія додатку](/doc/guide/uk/basics.application#application-base-directory) `/wwwroot/blog/protected`. Більша частина нашого коду і даних буде зберігатися в цій директорії і повинна бути захищена від прямого доступу користувачів із веб. Для [веб-сервера Apache](http://httpd.apache.org/) ми кладемо в цю директорію файл `.htaccess` із наступним змістом: ~~~ deny from all ~~~ Інструкції по налаштуванню захисту директорії від прямого доступу для інших веб-серверів ви можете знайти у відповідній документації. Послідовність роботи додатка ---------------------------- Щоб зрозуміти роботу Yii, опишемо послідовність роботи нашого додатка при зверненні користувача до сторінки `Контакти`: 0. Користувач запитує URL `http://www.example.com/blog/index.php?r=site/contact`; 1. Для обробки запиту запускається [вхідний скрипт](/doc/guide/uk/basics.entry); 2. Екземпляр [додатка](/doc/guide/uk/basics.application) створюється і налаштовується із початкових значень, вказаних в файлі конфігурації `/wwwroot/blog/protected/config/main.php`; 3. Додаток передає обробку запиту певній [дії](/doc/guide/uk/basics.controller#action) [контролера](/doc/guide/uk/basics.controller). Запит сторінки `Контакти` обробляється дією `contact` контролера `site` (методом `actionContact` класу `/wwwroot/blog/protected/controllers/SiteController.php`); 4. Додаток створює контролер `site` (екземпляр класу `SiteController`) і виконує його; 5. Виконується дія `contact` (метод `actionContact()` класу `SiteController`); 6. Метод `actionContact()` виводить [представлення](/doc/guide/uk/basics.view) `contact`. При цьому підключається файл представлення `/wwwroot/blog/protected/views/site/contact.php` і результат його виконання підставляється в [макет](/doc/guide/uk/basics.view#layout) `/wwwroot/blog/protected/views/layouts/column1.php`.