Главная Новости Статьи Обсуждения Вход  
cake
codeinginter
django
googleapp
ruby on rails
symfony
zend
zope
Все новости
cake
codeinginter
django
googleapp
ruby on rails
symfony
zend
zope
Все статьи

別れさせ屋の略奪愛
cake
codeinginter
django
googleapp
ruby on rails
symfony
zend
zope
Задать вопрос
Получение лицензий связи
Прайс-лист на услуги. Контактные сведения.
telecom-license.ru
Смесители для ванной
Оборудование для ванной комнаты. Информация об акциях и скидках.
san-dom.ru
Мебель россии
Условия доставки и сборки. Правила оплаты.
mebel-up.ru
 
 

Краткий обзор php - фреймворка Yii.

С недавним времён мне захотелось научиться писать качественный ООП — код. Для этих целей в сети существует масса фреймворков и библиотек, однако некоторое время «пошарив» в сети, мой выбор пал на Фреймворк Yii — детище одного человека Qiang Xue. Фреймворк очень молод, первая версия вышла 1 января 2008 года. При выборе я руководствовался следующими требованиями:

  1. MVC — архитектура;
  2. Наличие модели ORM;
  3. Генерация CRUD;
  4. Скорость работы;
  5. Наличие русской документации и сообщества разработчиков;
  6. Наличие дополнительных бесплатных модулей( хотя меня не сильно это до сих пор заботит).
Итак, начнём по порядку. MVC — архитектура. Она реализована с yii следующим образом:
  1. Запрашивается index.php, из него происходит подключение фреймворка, вызывается статический метод run: Yii::createWebApplication($config)->run();
  2. Инициализируется конфиг приложения ( подключаются компоненты, модули, настраиваются параметры приложения);
  3. Далее происходит разбор Url — роутинг запроса, за это отвечает массив urlManager (/config/main.php);
  4. После определения нужного контроллера вызывается в один из методов экземпляра контроллера, например в actionIndex, если url будет выглядеть index.php?r=site/index (yii также имеет возможность генерации ЧПУ);
  5. Далее создаётся модель (класс CModel), если в методе контроллера есть вызов модели, также может вызываться виджет (Cwidget) или представление ($this->render('view')).

Наличие модели ORM реализовано посредством паттерна ActiveRecord. Этот шаблон доступа к БД хорошо описан с русскоязычной документации Yii. Здесь следует выделить лишь несколько моментов:

  • 1. Если запрос через ActiveRecord объединяет в себе данные нескольких таблиц, то необходимо в потомке класса CactiveRecord написать следующее (для класса постов на форуме) :
  •     public function relations()
    
        {
            return array(
                'author'=>array(self::BELONGS_TO, 'User', 'author_id'),
                'categories'=>array(self::MANY_MANY, 'Category',
                'tbl_post_category(post_id, category_id)'),
                );
        }
    
    Здесь обозначено название связи (aithor и categories), вид связи (BELONG_TO -1xN, MANY_MANY- nxm), название связанной таблицы (User и Category). Связь «один ко многим» осуществляется через FK author_id, а связь «многие ко многим» осуществляется через вспомогательную таблицу tbl_post_category с первичными ключами post_id и category_id.
  • 2. Доступ к данным осуществляется через два метода: а) Обычный реляционный запрос. $post=Post::model()->findByPk(10); $author=$post->author; Такой запрос порождает большую нагрузку на СУБД, б) Для сокращения нагрузки используется «lazy loading». $posts=Post::model()->with('author')->findAll(); Масса параметров для order by , where, having, group by передаются в функциях find. Для более подробной информации необходимо обратится к первоисточникам.
  • 3.Генерация CRUD. Для генерации используется модуль gii, который необходимо подключить в кофиге main.php
  • 'gii'=>array('class'=>'system.gii.GiiModule',
    	'password'=>'password',
    ),
    
    Использовать его можно через URL - ~/index.php?r=gii. Через интерфейс можно создавать не только CRUD, а также отдельные модули, модели, контроллеры и формы. Фреймворк сам позаботится о валидации данных на основе свойств столбцов указанных таблице.
  • 4. Скорость работы пока не измерялось, однако на домашней странице фреймворка уверяют в том, что именно он самый быстрый:
  • Примером сайта, сделанного на фреймворке yii может служить сайт о советских фильмах и книгах - dimspace.ru . Жду ваших комментариев!
    Данная статья направлена всего лишь на ознакомление с php — фреймворком yii. Она не претендует на полноту описания и функционала данного фреймворка.



    Ответить:


     

    Регистрация
      Главная Новости Статьи Обсуждения Вход  
    FARAMAG.COM 2008-2010