Yii*, PHP*

Yii 2.0.12

SamDark 6 июня в 14:01 10,2k

Вышла версия 2.0.12 PHP фреймворка Yii. Инструкции по установке и обновлению ищите здесь.



Версия 2.0.12 является минорным релизом Yii 2.0. Она включает в себя более сотни улучшений и исправлений.


В релиз вошли несколько изменений, которые могут повлиять на существующие приложения. Эти изменения описаны в UPGRADE.md.


Спасибо сообществу Yii за поддержку проекта!


За разработкой фреймворка можно следить поставив звёздочку на GitHub. Также можно подписаться на Twitter и Facebook.


Данный релиз задержался, потому как команда была занята другими вещами. Например, мы работаем над новым сайтом и YiiConf
— конференции по Yii
, которая пройдёт совсем скоро в Москве.


Так как Yii 2.1 уже разрабатывается, убедитесь, что версия в вашем composer.json прописана как ~2.0.12, а не >= или *. Так, при релизе 2.1, ваш проект точно не сломается.


Ниже мы рассмотрим самые интересные изменения релиза. Полный список можно посмотреть в CHANGELOG.


Тесты


Покрытие тестами очень важно для своевременного обнаружения проблем. К релизу @vladis84, @boboldehampsink, @Kolyunya и другие члены сообщества Yii помогли нам расширить покрытие кода.


@schmunk42 настроил дополнительное тестирование на базе docker и развернул его в GitLab. Некоторые тесты там всё ещё падают. Главным образом, из за отличий в данных для интернационализации. Это будет исправлено немного позже.


Базы данных


Слой работы с базами получил несколько улучшений в работе с выражениями. Теперь их можно использовать в \yii\db\QueryTrait::limit(), \yii\db\QueryTrait::offset() и \yii\data\Sort.


MSSQL


Поддержка MSSQL существенно улучшилась. Значительно возросла скорость чтения схемы и был реализован метод yii\db\mssql\QueryBuilder::resetSequence().


Безопасность


  • yii\base\Security::hkdf() был улучшен. Теперь, если это возможно, используется hash_hkdf() из PHP >= 7.1.2.
  • В yii\captcha\CaptchaAction теперь используется mt_rand() вместо rand() .

Юзабилити


Шаблон миграций теперь по умолчанию использует safeUp() и safeDown(). В том случае, когда изменения схемы в транзакции не поддерживаются (например, MySQL), изменения применяются без транзакций.


Различные компоненты фреймворка обзавелись значениями по умолчанию:


  • \yii\data\SqlDataProvider теперь считает записи самостоятельно в том случае, когда totalCount не указан.
  • Провайдеры данных автоматически выставляют ID. Больше нет необходимости указывать его для случая, когда несколько провайдеров с постраничной разбивкой используется на одной странице.
  • Фильтр для yii\grid\DataColumn автоматически генерится как выпадающий список в том случае, если format выставлен в boolean.

Команда yii cache начала предупреждать о том, что она не может очистить кеш APC из консоли.


yii\filters\AccessRule теперь позволяет передать параметры в функцию проверки роли.


Производительность


  • В yii\web\UrlManager добавлена поддержка кеширования вызовов yii\web\UrlRule::createUrl() в случае использования правил с умолчаниями.
  • В DB command Добавлена опция для отключения логирования и профайлинга.
  • yii\data\ActiveDataProvider не делает запросы в том случае, когда количество моделей равно нулю.

Всякое


StringHelper научился работать с URL-безопасным base64 через методы encode()/decode(). Это может быть полезно для различных токенов.


yii\helpers\Html::img() теперь позволяет указать srcset:


[php]
echo Html::img('/base-url', [
    'srcset' => [
        '100w' => '/example-100w',
        '500w' => '/example-500w',
        '1500w' => '/example-1500w',
    ],
]);

У yii\widgets\LinkPager можно рендерить кнопку текущей страницы как disabled. Для этого необходимо выставить disableCurrentPageButton в true.


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


  • yii\filters\AccessControl теперь может использоваться без компонента user.
  • Валидаторы больше не требуют Yii::$app.
Проголосовать:
+43
Сохранить: