<rmcreative>

RSS

Все заметки с тегом «Yii»

Можно уточнить:

  1. РИФ 2010, доклад про фреймворки

    1 сентября 2010

    15 сентября на Воронежском РИФ расскажу про фреймворки. Доклад называется «PHP-фреймворк Yii. Выбираем PHP-фреймворк. Особенности разработки с фреймворками». Часть про Yii будет совсем небольшая.

    Регистрация заканчивается 14 сентября, так что если хотите посетить данное мероприятие — с регистрацией затягивать не стоит.

    UPD: тема изменилась на «Выбираем PHP-фреймворк. Особенности разработки с фреймворками».

    6 комментариев
  2. Yii: параметры для действия контроллера

    30 августа 2010

    В стремительно приближающемся релизе Yii 1.1.4 будет довольно приятная возможность. Теперь можно будет использовать $_GET-параметры как параметры действия контроллера.

    Теперь вместо:

    class PostController extends CController
    {
        public function actionCreate()
        {
            if(isset($_GET['category']))
                $category=(int)$_GET['category'];
            else
                throw new CHttpException(404,'invalid request');
     
     
            if(isset($_GET['language']))
                $language=$_GET['language'];
            else
                $language='en';
     
     
            // ... действительно полезная часть кода ...
        }
    }

    можно будет так:

    class PostController extends CController
    {
        /**
         * Создание поста.
         * @param integer $category ID категории нового поста
         * @param string $language язык нового поста
         */
        public function actionCreate($category, $language='en')
        {
            // ... действительно полезная часть кода ...
        }
    }

    При этом, если в $_GET не оказалось указанного параметра и для параметра нет значения по умолчанию, будет выброшено исключение CHttpException.

    Если в PhpDoc метода присутствуют типы параметров (поддерживаются integer(int),boolean(bool),float(double) иstring`), происходит автоматическое приведение типа из $_GET к указанному.

    UPD: после пары дней внутренних и внешних обсуждений было решено выкинуть приведение типов.

    28 комментариев
  3. Наследование с одной таблицей в Yii

    18 августа 2010

    Реляционные БД не поддерживают наследование, поэтому при отображении объекта на БД приходится как-то это обходить. При этом необходимо минимизировать количество JOIN. Решается данная проблема довольно простым способом при помощи паттерна наследование с одной таблицей. При этом, в таблице хранятся столбцы для всей ветки классов, наследуемых от заданного. Для определения типа модели обычно используется поле type.

    В Yii этот паттерн реализуется достаточно красиво.

    Читаем

    13 комментариев
  4. CUrlManager::addRules

    5 августа 2010

    Довольно часто на форумах спрашивали, как добавить свои правила роутинга не из конфига, а, например, из БД или XML, лежащего в модуле.

    Теперь это можно сделать при помощи CUrlManager::addRules. Вызывать его необходимо до CWebApplication::processRequest. Всё, что будет добавлено позже будет проигнорировано.

    Одним из способов это сделать является использование событий. В данном случае CWebApplication::onBeginRequest.

    Например, для подгрузки правил из модулей в main.php пишем:

    'onBeginRequest'=>function($event){
      $route=Yii::app()->getRequest()->getPathInfo();
      $module=substr($route,0,strpos($route,'/'));
     
      if(Yii::app()->hasModule($module))
      {
        $module=Yii::app()->getModule($module);
        if(isset($module->urlRules))
        {
          $urlManager=Yii::app()->getUrlManager();
          $urlManager->addRules($module->urlRules);
        }
      }
      return true;
    },

    Код уже ушёл в SVN.

    25 комментариев
  5. Yii, судьба yiic shell

    29 июля 2010

    В Yii 1.1.2 было решено, что yiic shell, используемый для генерации кода из консоли, должен быть постепенно вытеснен GUI-генератором Gii. Решение было мотивировано тем, что поддерживать два генератора будет слишком накладно.

    С выходом 1.1.3 сообщество обратило на это внимание.

    Стоит сразу пояснить, что yiic сам по себе как поддержка консольных команд ни в коем случае не перестанет поддерживаться. yiic shell — только та часть, которая отвечает непосредственно за генерацию кода.

    По идее существует компромиссный вариант — использовать и для Gii и для yiic shell одни и те же шаблоны, что позволит свести затраты на их поддержку к минимуму. Проблема с ним в том, что в Gii в шаблон передаётся гораздо большее количество параметров.

    18 комментариев
  6. Ресурсы (asset) в Yii

    21 июля 2010

    Опубликовал новый рецепт по Yii, рассказывающий, что такое ресурсы в Yii и детально описывающий процесс их публикации и подключения.

    Читаем

    12 комментариев
  7. Улучшенное сообщение об ошибке для Yii

    20 июля 2010

    http://rmcreative.ru/playground/yii_trace/thumb.png

    Подумал над улучшением и без того довольно неплохих сообщений об ошибках Yii в режиме отладки. Реализовал несколько идей. В итоге получился довольно полезный обработчик. В дополнение к тому, что умеет стандартный:

    • Умеет показывать параметры stack trace.

    • Различает статические и динамические вызовы.

    • Выглядит немного получше.

    Для сравнения, вот результаты работы старого и нового обработчиков для одной и той же ошибки.

    Опробовать обработчик в деле можно забрав код из SVN.

    Стоит ли включать эти изменения в ядро Yii? Что ещё можно доработать?

    UPD: включено в состав ядра Yii.

    22 комментария
  8. zendAutoloader 1.1

    15 июля 2010

    Обновил zendAutoloader до версии 1.1 и заодно решил написать о нём здесь. Класс является лёгким загрузчиком классов Zend Framework для Yii.

    В 1.1 добавилась возможность подгружать классы, использующие такое же именование, как в Zend Framework, но с другим префиксом.

    1 комментарий
  9. Yii 1.1.3

    5 июля 2010

    Зарелизился Yii версии 1.1.3. Исправлено более двадцати ошибок, добавлено более пятидесяти мелких и не очень улучшений, которые отлично описал rosko на хабре.

    Русская документация, как обычно, не отстаёт от англоязычной и с каждым днём в ней становится всё меньше ошибок и опечаток (спасибо за ваши репорты).

    Обновляемся

    changelog

    Комментировать
  10. Постраничная разбивка в Yii

    29 июня 2010

    Упоминание о простейшей постраничной разбивке в документации к последним версиям Yii было заменено работой с компонентами zii. Да, в API всё осталось, но шансы наткнуться на нужный класс снизились, поэтому опишу простейшую постраничную разбивку на примере.

    Читаем

    69 комментариев