<rmcreative>

RSS

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

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

  1. Скорость eval и анонимных функций

    11 февраля 2012

    Всё ещё используете eval там, где его можно не использовать? Вот ещё одна причина посмотреть в сторону PHP 5.3 и анонимных функций:

    $count = 50;
    $start = microtime(true);
    $y = 0;
    for($i = 0; $i < $count; $i++)
    {
        eval('++$y;');
    }
     
    printf("#1, result is %d, done in %f\n", $y, microtime(true) - $start);
     
    $start = microtime(true);
    $y = 0;
    for($i = 0; $i < $count; $i++)
    {
        $f = function() use (&$y)
        {
            return ++$y;
        };
        $f();
    }
     
    printf("#2, result is %d, done in %f\n", $y, microtime(true) - $start);

    На выходе получаем:

    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000415
    #2, result is 50, done in 0.000270
     
    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000413
    #2, result is 50, done in 0.000261
     
    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000412
    #2, result is 50, done in 0.000273

    Кроме того, что анонимные функции удобней, они ещё и быстрее.

    12 комментариев
  2. Выступлю на UWDC'12

    6 февраля 2012

    26 Февраля буду выступать на UWDC'12 на тему «Фреймворки, Yii и работа в команде». Расскажу про Yii, его историю, про то, насколько он вырос и где используется. Также попробую затронуть фундаментальные ошибки Yii 1.1, которые мы попробуем исправить в 2.0.

    Все желающие послушать приглашаются. Конференция обещает быть интересной… Да, видео обещать не буду так как оно куда-то постоянно теряется.

    12 комментариев
  3. YiiTalk, эпизод 2

    24 января 2012

    Сегодня вместе с Юрием Беляковым записался в подкасте YiiTalk, первом русскоязычном подкасте про Yii. Говорили про меня, про Yii и его развитие, немного про вторую версию и программирование в целом.

    Слушаем на podfm

    11 комментариев
  4. Схема обработки ошибок в Yii

    22 января 2012

    На хабре в блоге Yii за время моего отпуска появился подробный разбор того, как работает обработка ошибок в Yii. Если по каким-то причинам пропустили — рекомендую.

    Читаем

    2 комментария
  5. Yii 1.1.9

    1 января 2012

    Вышла стабильная версия Yii 1.1.9. В данном релизе около 60 улучшений и исправленных ошибок.

    Полный список изменений можно посмотреть в соответствующем файле. Перед обновлением с более ранних версий важно ознакомиться с инструкциями.

    Русскоязычная документация, как обычно, находится в полностью актуальном состоянии. Кроме того, поправлены все найденные на момент релиза опечатки. Спасибо всем, кто использует Orphus на yiiframework.ru.

    Рассмотрим наиболее интересные изменения.

    Более удобный способ определения through в отношениях ActiveRecord

    Опция though была добавлена в версии 1.1.7, но синтаксис был не слишком удобен, так что было решено сделать его более явным. В текущей версии используется следующий синтаксис:

    'comments'=>array(self::HAS_MANY,'Comment',array('key1'=>'key2'),'through'=>'posts'),

    В приведённом выше array('key1'=>'key2'):

    • key1 является ключом, определённым в отношении, котрое указано в through (в нашем случае это posts).
    • key2 является ключом, определённым в модели, на которую указывает отношение (в нашем случае это Comment).

    through можно использовать как для HAS_ONE, так и для HAS_MANY.

    Подробнее данная возможность описана в разделе Реляционная Active Record полного руководства.

    Поддержка групп условий в Model::relations()

    Теперь можно использовать группы условий при определении отношений модели:

    'recentApprovedComments'=>array(self::BELONGS_TO, 'Post', 'post_id', 
        'scopes' => array('approved', 'recent')),

    При использовании лишь одной группы условий её можно указать как строку.

    Возможность сделать JOIN между моделями по заданным ключам

    В данной версии стало возможым создание отношений по заданной паре PK->FK не опираясь на схему данных. Это означает, что можно, например, задать следующее отношение для модели Day:

    'jobs'=>array(self::HAS_MANY, 'Job', array('date' => 'target_date')),

    В данном случае Day может содержать несколько Jobов. При этом они не связаны привычным образом. Мы задали ключ в виде array('fk'=>'pk'), то есть на выходе мы получим SQL вроде

    SELECT * FROM day t
    JOIN job ON t.date = job.target_date
    

    Возможность перекрыть классы ядра при помощи Yii::$classMap

    Начиная с 1.1.5 в Yii была возможность заранее импортировать классы и использовать их без явного импорта или include. Теперь используя тот же самый подход можно перекрыть классы ядра.

    8 комментариев
  6. Расширение для анализа производительности SQL-запросов для Yii

    24 ноября 2011

    Хорошая вариация на тему профайлера SQL под Yii была выложена на днях Владимиром. Кроме списка самих запросов расширение выводит план выполнения запроса (EXPLAIN).

    Пробуем

    Комментировать
  7. Yii: автозагрузка библиотек, использующих namespace

    3 ноября 2011

    Для загрузки библиотек, использующих namespace по соглашению PSR-0 (например, Zend Framework 2 или Symfony2) необходимо сначала зарегистрировать корень библиотеки как псевдоним пути.

    Для примера попробуем использовать Imagine. Скорируем директорию Imagine в protected/vendors. Ну и само использование:

    Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine'));
     
     
    // Далее стандартный код из README Imagine:
    // $imagine = new Imagine\Gd\Imagine();
    // и т.д.

    В приведённом коде имя псевдонима пути должно совпадать с первой частью namespace, которая используется в библиотеке.

    Данное описание со следующим релизом попадёт в официальный гайд.

    8 комментариев
  8. Yii DB profiler

    14 сентября 2011

    Довёл до ума и выложил профайлер SQL-запросов для Yii.

    Основан на CProfileLogRoute, т.е. всё так же отображает данные внизу страницы. Отличий несколько:

    1. Показываются только SQL-запросы и ничего лишнего.
    2. Вместо общего времени выполнения и потребляемой памяти показываются время выполнения запросов и их количество.
    3. Умеет подсвечивать розовым проблемные запросы. Либо те, которые достаточно долго выполняются, либо те, которые выполняются много раз. Количество повторений и время выполнения настраиваются.

    Пользуемся

    20 комментариев
  9. Yii, получаем количество запросов к базе данных и общее время их выполнения

    14 сентября 2011

    list($queryCount, $queryTime) = Yii::app()->db->getStats();
    echo "Query count: $queryCount, Total query time: ".sprintf('%0.5f',$queryTime)."s";
    2 комментария
  10. Бесплатная глава из Yii 1.1 Application Development Cookbook

    31 августа 2011

    Восьмая глава книги в PDF-формате стала доступна для бесплатного скачивания.

    Называется она «Extending Yii» и рассказывает о написании и распространении расширений и содержит следующие рецепты:

    • Creating model behaviors
    • Creating components
    • Creating reusable controller actions
    • Creating reusable controllers
    • Creating a widget
    • Creating CLI commands
    • Creating fi lters
    • Creating modules
    • Creating a custom view renderer
    • Making extensions distribution-ready
    14 комментариев