yii framework

На днях прочитал заметку о фреймворке yii.
Решил подробнее с ним ознакомтся.
Сразу отмечу никаких реальных приложений (за исключением hello world) я на нем не писал (да и не успел бы…так как узнал о его существовании совсем недавно)….
Так же сразу оговорюсь…до этого момента я имел дело лишь с CI и совсем немного с Kohana, так что сравнивать кроме как с этими двума фреймворками — больше не с чем…

Большинство выводов, которые будут привидены в этой небольшой статье основаны только на подробнейшей документации по данному фреймворку, но никак не на его реальном использовании.

И так поехали…Что мне понравилось
1) Генерация кода — некоторые скажут что это бесполезная функция, однако не имея таковой в CI,  пользоваться ей в Yii было приятно. Для генерация всего и вся используется скриптик yiic (так же есть что-то  типа интерактивного шела), с помощью которого можно сгенерировать многое, от моделей и контроллеров, до «скелета» целого приложения и CRUD операций с данными в БД.
2) Контроллеры (controllers) — понравилось что в контроллере можно назначать действие по умолчанию, в CI и Kohana — действие по умолчанию — index.
3) Действия (actions) — действием может быть как метод контроллера (стандартный вариант) так и отдельный класс. Действие оформленное в виде отдельного класса позволяет использовать свои возможности в любом месте приложения — иногда может оказаться полезным.
4) Представления (view) — как и раньше это просто HTML файлы со вставками php кода. Понравилось что по умолчанию yii ищет view-файлы в подкаталоге, имя которого совпадает с ID контроллера (например для контроллера userController, view — файлы будут искаться в каталоге …view/user/…). Так же порадовало наличие Layout — общего view для всех страниц приложения — часто приходится делать это ручками.
5) Фильтры (Filter) — вот что действительно мне очень понравилось. Фильтры позволяют выполнить произвольный код перед и/или после того как будет выполнено действие контроллера, при необходимости фильтр может отменить выполнение действия. Фильтром может служить как метод контроллера так и отдельный класс, кроме того можно явно указать какие действия контроллера необходимо «фильтровать» а какие нет. Фильтров для конкретного действия может быть сколько угодно. Очень удобно применять один и тот же фильтр для всех контроллеров приложения, например для проверки авторизации пользователя.
Судя по официальному сайту реализация фильтров была позаимствована из symfony — так как я не знаком с данным фреймворком — ничего по этому поводу сказать не могу.
6) Модели (models) — модели используют ORM для взаимодействия с БД, для меня, писавшего некоторое время на CI и не видевшего ORM раньше — данный подход показался довольно интересным. Кроме ORM можно использовать DAO (в терминах yii), этот метод позволяет sql- писать запросы «ручками».
7) Пути и пространства имен. yii позволяет создавать алиасы для реальных путей  файловой системы.
Есть возможность импортировать отдельные классы и даже целые каталоги классов, используя синтаксис очень напоминающий JAVA.

Напимер:
Yii::import(‘system.web.CController’);
Yii::import(‘system.web.*’);
8) Система кеширования — позволяет кэшировать как отдельные переменные и фрагменты страниц, так и целые страницы.
Вот наверное и все что мне запомнилось после беглого прочтения документации, однако на самом деле возможности фреймворка не ограничиваются этим списком.
Я не упомянул здесь развитую систему «логирования» (кстати у меня так и не получилось записать сообщение в лог файл — может ручки кривые))), систему роутинга и многие другие возможности.
Кроме того базовые возможности фреймворка можно расширить использованием сторонних библиотек.
На первый взглад фреймворк очень достоин дальнейшего изучения и приминения на деле (если не будет серьезных ошибок)!

обсудить на форуме

Читайте еще:

yii framework: 5 комментариев

  1. Bethrezen

    Привет. Мне понравилась твоя статья. Я разместил её на первом русскоязычном сайте о Yii Framework с указанием обратной ссылки.
    Посмотреть можешь тут http://yii.devgroup.ru/tiki-read_article.php?articleId=2

    Если есть желание — можешь присоедениться к работе над сайтом.

  2. yii novice

    Народ, подскажите чайнику: пытался сгенерить приложение с помощью yiic, получаю ошибку

    fgets(): supplied argument is not a valid stream resource, D:\frameworks\yii\framework\cli\commands\WebAppCommand.php

    посмотрел, там вроде все правильно стоит: fgets(STDIN).

    Что не так? Может у кого-то что-то аналогичное случалось?
    Спасибо!

  3. xargon

    @yii novice
    если работаешь под денвером, проверь путь до интерпретатора php:
    должно стоять x:\usr\local\php5\php.exe

  4. yii novice

    Спасибо, наверное это тоже путь!
    Я решил иначе: то, что у меня запускается из cmd, не есть cli-php. Соответственно, он не понимает константу STDIN.
    Определил ее в yiic.php:
    define (‘STDIN’, fopen(‘php://stdin’, ‘r’));
    и все заработало!

Обсуждение закрыто.