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

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

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

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

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

После установки Yii откроем окно браузера и перейдем по адресу http://www.example.com/yii/requirements/index.php. Мы увидим анализатор требований, поставляемый в релизе Yii. Убедимся, что наши веб-сервер и установленная версия PHP соответствуют минимальным требованиям Yii. В частности, мы должны включить расширения PHP pdo и pdo_sqlite, которые требуются нашему блогу для доступа к БД 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. Мы должны увидеть, что наше приложение имеет 3 полнофункциональных страницы: Главная, Контакты и Вход.

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

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

У нас есть файл входного скрипта /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. Для обработки запроса запускается входной скрипт;
  2. С определенными в файле конфигурации /wwwroot/blog/protected/config/main.php начальными значениями создаётся экземпляр приложения;
  3. Приложение отдаёт обработку запроса определённому действию контроллера.
    Запрос страницы Контакты обрабатывается действием contact контроллера site;
  4. Приложение создает контроллер site (экземпляр класса SiteController) и выполняет его;
  5. Выполняется действие contact (метод actionContact() класса SiteController);
  6. Метод actionContact() выводит представление contact. При этом подключается файл представления /wwwroot/blog/protected/views/site/contact.php и результат его выполнения подставляется в макет /wwwroot/blog/protected/views/layouts/main.php.
$Id: start.testdrive.txt 683 2009-02-16 05:20:17Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.