Как стать автором
Обновить

Версия 1.0.6

Время на прочтение2 мин
Количество просмотров822
7 июня вышла очередная ежемесячная версия фреймворка Yii — 1.0.6. Рассмотрим список и немного деталей самых примечательных изменений.

Развитие named scopes


Добавленная поддержка named scopes для методов update() и delete(), а также для with(). Можно использовать следующие приемы:
  • Post::model()->published()->recently()->delete();

  • $posts=Post::model()->with('comments:recently:approved')->findAll();

  • class User extends CActiveRecord
    {
        public function relations()
        {
            return array(
                'posts'=>array(self::HAS_MANY, 'Post', 'authorID',
                    'with'=>'comments:approved'),
            );
        }
    }


Профайлинг SQL


Добавлен профайлинг sql-запросов. Благодаря CProfileLogRoute можно теперь измерить сколько времени исполняется каждый из запросов. Также можно использовать CDbConnection::getStats() для получения общего количества выполненных sql-запросов и их общего времени исполнения.

Журналирование контекста


Появилась возможность записи в лог дополнительной контекстной информации (например, переменных $_GET, $_SERVER, идентификатора сессии, имя пользователя и т.д.).

Это настривается с помощью свойства CLogRoute::filter. Например:

return array(
    // ... 
    'preload'=>array('log', 'session'),
 
    // ...
    'components'=>array(
        // ... 
        'log'=>array(
        'class'=>'CLogRouter',
        'routes'=>array(
            array(
                'class'=>'CWebLogRoute',
                'levels'=>'trace,info,error,warning',
                'filter' => array(
                    'class' => 'CLogFilter',
                    'prefixSession' => true,
                    'prefixUser' => false,
                    'logUser' => false,
                    'logVars' => array(),
                ),
            ),
        ),


Улучшение ЧПУ


Каждое правило преобразования ссылок можно настраивать более гибко с помощью опций urlSuffix и caseSensetive. Теперь правило преобразования может приобретать следующий вид:

'pattern1'=>array('route1', 'urlSuffix'=>'.xml', 'caseSensitive'=>false)

А вот с помощью CUrlManager::useStrictParsing можно включить режим преобразования ссылок основанный исключительно на правилах. Тогда, например, ссылки с неопределенными в правилах GET-переменными будут отображаться в виде /page?var=value, а не /page/var/value/. Это работает только, если urlFormat равен 'path'.

Обработка ошибок в контроллере


Теперь Yii позволяет использовать действие контроллера для обработки ошибок. Определяется это в файле конфигурации:

return array(
    ......
    'components'=>array(
        'errorHandler'=>array(
            'errorAction'=>'site/error',
        ),
    ),
);

А в нужном действии нужного контроллера используем Yii::app()->errorHandler->error.

Другие приятные мелочи


Улучшения консоли


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

Файловый кеш


Класс для хранения кеша в файлах, который раньше появился, как расширение Yii, теперь введен в дистрибутив и называется — CFileCache.

CMemCache


Улучшен и теперь работает и с memcache, и с memcached.

Драйвер MySQL


При использовании MySQL поля типа tinyint(1) определяются как булевые.

Воспользовавшись ссылками в тексте, можно более делательно изучить освещенные изменения.
Теги:
Хабы:
Всего голосов 28: ↑21 и ↓7+14
Комментарии17

Публикации