Yii2: релиз 2.0.3 по расписанию

Yii 2.0.3 release новый релизКак по часам, вышел очередной стабильный релиз замечательного php-фреймворка Yii 2.

Версия 2.0.3 является патч-релизом и содержит около 50 улучшений и исправлений ошибок. Полный перечень изменений можно найти здесь. По доброй традиции, над улучшениями и исправления трудилось большое количество участников сообщества.

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

Поддержать проект можно присоединившись к сообществу:

Рассмотрим некоторые из улучшений в этом релизе.

Изменения в крипто-библиотеке

Большие изменения произошли «под капотом» криптографической библиотеки yii2. Класс yii\base\Security теперь использует библиотеку OpenSSL, а не старушку Mcrypt, которая не поддерживается авторами уже 8 лет. Отдельные благодарности Tom Worster. Библиотека OpenSSL нативно поддерживается php, так что, проблем с обратной совместимостью возникнуть не должно.

Кеширование RBAC

При использовании базы данных для хранения информации RBAC, могут проявляться проблемы с производительностью, так как, при каждой проверке прав доступа, может выполняться большое число запросов SQL. Для улучшения производительности, в класс yii\rbac\DbManager добавлен механизм кеширования. Это позволило сохранять всю иерархию RBAC в кеше и увеличить производительность при использовании checkAccess(). По умолчанию, кеширование RBAC отключено. Для включения кеша RBAC нужно изменить настройки приложения. Пример:

return [
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            'cache' => 'cache',   // this enables RBAC caching
        ],
        'cache' => [
            'class' => 'yii\caching\ApcCache',
        ]
        // ...
    ],
]

Кеширование страниц

До этого времени, кеширование страниц было ограничено только кешем HTML содержимого. И при попытке использования его для кеширования RESTful ответов, могли возникать ошибки из-за неправильного форматат ответа. В текущем релизе Yii 2.0.3, класс yii\filters\PageCache позволяет кешировать ответы с различными видами данных.

Как кешировать действие index контроллера RESTful. Пример реализации с использованием поведения:

public function behaviors()
{
    return [
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
        ],
    ];
}

Изменение текущего адреса url

Новый метод хэлпера yii\helpers\Url::current() позволяет легко изменять текущий url запроса. Возможно добавление или удаление GET параметров. Пример:

// assume $_GET = ['id' => 123, 'src' => 'google'], current route is "post/view"

// /index.php?r=post/view&id=123&src=google
echo Url::current();

// /index.php?r=post/view&id=123
echo Url::current(['src' => null]);
// /index.php?r=post/view&id=100&src=google
echo Url::current(['id' => 100]);

Отключение ротации логов

При использовании класса yii\log\FileTarget для вывода данных в лог-файлы, теперь возможно отключение автоматической ротации файлов. Это удобно и особенно полезно, при использовании внешних инструментов для ротации файлов.

Как отключить ротацию логов в Yii 2.0. В конфигурации приложения нужно указать параметр enableRotation со значением false. Пример:

return [
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'enableRotation' => false,
                ],
            ],
        ],
    ],
];

Атрибуты data

При использовании хэлпера yii\helpers\Html для генерации html тегов, теперь можно использовать атрибут data напрямую. Пример:

// displays: <div data-name="xyz" data-age="20"></div>
echo Html::tag('div', '', ['data' => ['name' => 'xyz', 'age' => 20]]);

При работе с AngularJS, полезно будет использование атрибутов ng и data-ng напрямую.

Обрезка входных данных

При использовании правила валидации trim, теперь доступна обрезка пустых символов на стороне клиента. Для отключения данной возможности, достаточно установить параметр правила trim enableClientValidation в false.

Максимальная длинна поля ввода

Теперь, при использовании методов yii\helpers\Html::activeTextInput() или yii\widgets\ActiveField::textInput(), для создания поля ввода, возможно указать атрибут maxlenght. В таком случае, при наличии правила валидации с ограничением длинны строки, это ограничение будет установлено и для соответствующего поля ввода. Пример:

// assume "name" has a validation rule: ['name', 'string', 'max' => 128]
// generates: <input type="text" ... maxlength="128">
echo Html::activeTextInput($model, 'name', ['maxlength' => true]);

Заключение

Не отставайте от фреймворка, читайте доку, творите, наслаждайтесь;)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *