Yii — Быстро создаем приложение на PHP

Yii — мой любимый php фреймворк 🙂
Так получилось что до определенного момента я не любил программировать на php. В какой то мере и из-за того что все приложения которые я видел представляли из себя мешанину php и html. И только когда в 2009 году мне понадобиться более серьезное использование php, я заинтересовался существующими фремворками для этого языка. Мой выбор пал на тогда молодую библиотеку yii. И в дальнейшем я не пожалел.
А теперь краткий курс молодого бойца. Все примеры сделаны на денвере и по умолчанию на localhost
Фактически это краткий пересказ раздела хелпа yii с моими ремарками.

Скачиваем. Устанавливаем.

  1. Идем на сайт фремворка и скачиваем стабильную версию
  2. Распаковываем содержимое архива фремворка в каталог хоста (z:\home\localhost\www)
  3. Проверяем все ли что требуется yii у нас в наличие. Переходим на http://localhost/requirements/

Генерируем шаблон приложения.
В yii есть специальное приложение позволяющее быстро генерит необходимый код.
Зовется это приложение yiic и разумеется представляет из себя php скрипт.
Для работы с ним использую батник следующего содержания:

set PHP_COMMAND=z:\usr\local\php5\php.exe
cd .
.\framework\yiic.bat webapp .
pause

Батник помещаю в каталог с программой (z:homelocalhostwww) и запускаю.
После чего у вас появится шаблон приложения.
Перевод сообщений на русский язык
По умолчанию yii выдает сообщения на английским языке (Например при автоматической проверки введеных данных в форму). Для перевода ресурсов на русский открываем конфигурационный файл(z:\home\localhost\www\protected\confi\gmain.php).
В возвращаемом массиве прописываем

'language' => 'ru',

Парадигма MVC (Лирическое отступление)
Yii, как и большинство современных php фреймворков, придерживается идеологии MVC.
Это значит что весь код делится на 3 части:

  • Контролер (поведения) — код обрабатывающий действия пользователя
  • Модель — код описывающий структуру данных с которыми работаем (поля, типы и т.д.)
  • Вьювер (представление) — код отвечающий за выводимые пользователю данные

Теперь где должен находится этот код в нашем проекте (от папки z:\home\localhost\www):

  • Контролер (поведения): protected\controllers
  • Модель: protected\models
  • Представление: protectedviews\{ИмяКонтроллера}

Yii для вызова определенного контролера используется следующий url:

http://localhost/index.php?r={Контролер}/{СобытиеВКонтролере}

Таким образом если у вас есть url следующего содержания

http://localhost/index.php?r=site/contact

То вы смело можете зайти на z:\home\localhost\www\protected\controllers и найти там файл
SiteController.php, а уже в нем функцию actionContact (которая и выполняется при этом url).

Изменение формата путей
Выше я описал yii формат URL для вызова события из контроллера.
http://localhost/index.php?r={Контролер}/{СобытиеВКонтролере}
Но на самом деле формат можно и поменять.

  1. открываем в редакторе файл настроек (z:\home\localhost\www\protectedconfigmain.php).
  2. Находим комментарий
    // uncomment the following to enable URLs in path-format
  3. Расскомментируем код идущий после этого комментария

Теперь наш урл имеет следующий формат:
http://localhost/index.php/{Контролер}/{СобытиеВКонтролере}
или с параметром:
http://localhost/index.php/{Контролер}/{СобытиеВКонтролере}?{Параметр}={Значение}

Подключаем базу данных
При работе с базами Yii использует PDO. Если кто то незнаком с этими 3 буквами, скажу что PDO это…

расширение для PHP, предоставляющее разработчику простой и универсальный интерфейс для доступа к различным базам данных. (с) wikipedia

Поэтому c помощью yii вы сможете работать с различными типами баз (MySQL/MsSql/PostgreSQL).
Для начала проверим есть ли в вашем денвере этот самый PDO. Заходим на страницу с командой phpinfo и смотрим какие модули у вас установлены. Драйверы для MySQL скорее всего должен быть.
Переходим к phpMyAdmin и создаем базу с чудным именем Test.
Настроим конфигурационный файл для доступа к безе:

  1. открываем в редакторе файл (z:\home\localhost\www\protected\config\main.php).
  2. Находим строку ‘db’=>array и раскометируем весь код который отвечает за работу с базой MySQL и коментимм код отвечающий за работу с SQLite.
		/*
		'db'=>array(
			'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
		),
		*/
		// uncomment the following to use a MySQL database
		'db'=>array(
			'connectionString' => 'mysql:host=localhost;dbname=test',
			'emulatePrepare' => true,
			'username' => 'root',
			'password' => '',
			'charset' => 'utf8',
		),

Имя базы я прописал test. Будет база по умолчанию.
Генерация кода
В состав yii входит инструмент для генерации кода. Называется Gii.
Для того что бы его включить вы должны отредактировать конфигурационный файл.
Отрываем: z:\home\localhost\www\protected\config\main.php
Ищем ‘modules’=>array и раскоментируем код отвечающий за Gii

	'modules'=>array(
		// uncomment the following to enable the Gii tool
		'gii'=>array(
			'class'=>'system.gii.GiiModule',
			'password'=>'123',
		 	// If removed, Gii defaults to localhost only. Edit carefully to taste.
			'ipFilters'=>array('127.0.0.1','::1'),
		),
	),

Пароль до доступа к Gii был поставлен 123.
Работает только при IP: 127.0.0.1
Запускаем Gii так: http://localhost/index.php?r=gii или http://localhost/index.php/gii
Если Вы не подключили базу данных то некоторые пункты меню Gii (например создание модуля) будет грязно ругаться и сообщать вам что нет PDO драйвера или нет соединения с базой.
Что же дает делать Gii в версии 1.1.8:

  • Controller Generator — Создает контролер. Код обрабатывающий действия пользователя (см. MVC)
  • Crud Generator — Создаем контролера выполняющего CRUD операции над указанной вами моделью данных. Аббревиатура «CRUD» расшифровывается как «create, read, update and delete» (создание, чтение, обновление и удаление). Т.е. вы можете производит все эти операции над моделью данных. Например если у вас есть модель User (хранит данные по пользователю), с помощью генерируемого кода вы сможете создавать пользователя, читать, обновлять и удалять. Кроме этого генерируется и интерфейс для работы с этими операциями!
  • Form Generator — Генерирует форму (представление) которая будет выводить дюнные по модели.
  • Model Generator — Генерирует модель данных на основе таблицы в базе.

Нормальное отображение русского текста в кодировке UTF-8
Маленький нюанс не касающийся yii. Если под денвером у вас не отображается русские буквы то вам надо отредактировать файл .htaccess (см. каталог z:homelocalhost)
Содержимое файла:

AddDefaultCharset utf-8
AddCharset utf-8 *

Yii — Быстро создаем приложение на PHP: 6 комментариев

  1. Аноним

    Содержимое файла:
    AddDefaultCharset utf-8
    AddCharset utf-8 *

    + сами файлы с исходным текстом должны быть в кодировке «UTF8»!

  2. Владимир

    Не правда! Мне как полному новичку как в Yii и в php было весьма полезно! Правда такое ощущение, что статья оборвалась и чего-то не хватило. Может в следующих уроках/статьях продолжение =)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *