0 follower

Знакомимся с Yii

В данном разделе мы опишем создание основы приложения, которая будет служить нашей отправной точкой. Для простоты, примем, что корневая директория нашего веб-сервера — /wwwroot, а соответствующий ей URL-адрес — http://www.example.com/.

1. Установка Yii

Сначала мы установим фреймворк. Скачаем дистрибутив фреймворка (версии 1.1.1 или выше) с сайта www.yiiframework.com и распакуем в директорию /wwwroot/yii. Убедимся, что получили директорию /wwwroot/yii/framework.

Подсказка: Фреймворк Yii может быть установлен в любом месте файловой системы, не обязательно в wwwroot. Директория framework содержит весь код фреймворка и является единственной и необходимой при развёртывании приложения. Одна копия Yii может использоваться несколькими приложениями.

После установки Yii откроем окно браузера и перейдем по адресу http://www.example.com/yii/requirements/index.php. Мы увидим анализатор требований, поставляемый вместе с релизом Yii. Для блога, кроме того, что требуется самому фреймворку, для доступа к БД SQLite нам понадобятся расширения PHP pdo и pdo_sqlite.

2. Создание основы приложения

Воспользуемся утилитой командной строки yiic, идущей в комплекте с фреймворком, для создания основы приложения в директории /wwwroot/blog. yiic может быть использована для генерации кода, что позволяет уменьшить объём повторяющегося кода, набираемого вручную.

Откроем окно командной строки и выполним следующую команду:

% /wwwroot/yii/framework/yiic webapp /wwwroot/blog
Create a Web application under '/wwwroot/blog'? [Yes|No]y
…

Подсказка: Чтобы использовать утилиту yiic как показано выше, путь к PHP должен быть прописан в системной переменной PATH. Если это не так, то мы можем использовать следующую команду:

путь/к/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog

Попробуем запустить только что созданное приложение. Откроем браузер и перейдем по адресу http://www.example.com/blog/index.php. Мы должны увидеть, что сгенерированная заготовка уже имеет 4 полнофункциональных страницы: «Главная», «О проекте», «Контакты» и «Вход».

Ниже мы кратко опишем, что именно мы получили.

Входной скрипт

У нас есть файл входного скрипта /wwwroot/blog/index.php:

<?php
$yii='/wwwroot/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
 
// удалить следующую строку в режиме production
defined('YII_DEBUG') or define('YII_DEBUG',true);
 
require_once($yii);
Yii::createWebApplication($config)->run();

Это единственный скрипт, к которому пользователи имеют прямой доступ. Сначала скрипт подключает файл начальной загрузки yii.php. Затем создает экземпляр приложения с заданными настройками и выполняет приложение.

Базовая директория приложения

Также, у нас есть базовая директория приложения /wwwroot/blog/protected. Большая часть нашего кода и данных будет храниться в этой директории и должна быть защищена от прямого доступа пользователей из веб. Для веб-сервера Apache мы помещаем в эту директорию файл .htaccess со следующим содержанием:

deny from all

Инструкции по настройке защиты директории от прямого доступа для других веб-серверов вы можете найти в соответствующей документации.

3. Последовательность работы приложения

Чтобы понять работу Yii, опишем последовательность работы нашего приложения при обращении пользователя к странице Контакты:

  1. Пользователь запрашивает URL http://www.example.com/blog/index.php?r=site/contact;
  2. Для обработки запроса запускается входной скрипт;
  3. С определенными в файле конфигурации /wwwroot/blog/protected/config/main.php начальными значениями создаётся экземпляр приложения;
  4. Приложение передаёт обработку запроса определённому действию контроллера. Запрос страницы Контакты обрабатывается действием contact контроллера site (методом actionContact класса /wwwroot/blog/protected/controllers/SiteController.php);
  5. Приложение создает контроллер site (экземпляр класса SiteController) и выполняет его;
  6. Выполняется действие contact (метод actionContact() класса SiteController);
  7. Метод actionContact() выводит представление contact. При этом подключается файл представления /wwwroot/blog/protected/views/site/contact.php и результат его выполнения подставляется в макет /wwwroot/blog/protected/views/layouts/column1.php.

Found a typo or you think this page needs improvement?
Edit it on github !