Вышла версия 2.0.12 PHP фреймворка Yii. Инструкции по установке и обновлению ищите на странице
http://www.yiiframework.com/download/.
Версия 2.0.12 является минорным релизом Yii 2.0. Она включает в себя более сотни улучшений и исправлений.
В релиз вошли несколько изменений, которые могут повлиять на существующие приложения. Эти изменений описаны в UPGRADE.md file.
Спасибо сообществу Yii за поддержку проекта!
За разработкой фреймворка можно следить поставив звёздочку на GitHub. Также можно подписаться на Twitter и Facebook.
Данный релиз задержался так как команда была занятна дргими вещами. Например, мы работаем над новым сайтом и YiiConf
— конференции по Yii, которая пройдёт совсем скоро в Москве.
Так как Yii 2.1 уже разрабатывается, убедитесь, что версия в вашем composer.json
прописана как ~2.0.12
, а не >=
или *
. Так при релизе 2.1 ваш проект точно не сломается.
Ниже мы рассмотрим самые интересные изменения релиза. Полный список можно посмотреть в CHANGELOG.
Тесты
Покрытие тестами очень важно для своевременного обнаружения проблем.
К релизу @vladis84, @boboldehampsink, @Kolyunya и
другие члены сообщества Yii помогли нам расширить покрытие кода.
@schmunk42 настроил дополнительное тестирование на базе docker и развернул его в GitLab. Некоторые тесты там всё ещё падают. Главным образом из за отличий в данных для интернационализации. Это будет исправлено немного позже.
Базы данных
Слой работы с базами получил несколько улучшений в работе с выражениями. Теперь из можно использовать в yiidbQueryTrait::limit()
, yiidbQueryTrait::offset()
и yiidataSort
.
MSSQL
Поддержка MSSQL существенно улучшилась. Значительно возросла скорость чтения схемы и был реализован метод yiidbmssqlQueryBuilder::resetSequence()
.
Безопасность
yiibaseSecurity::hkdf()
был улушен. Теперь, если это возможно, используетсяhash_hkdf()
из PHP >= 7.1.2.- В
yiicaptchaCaptchaAction
теперь используетсяmt_rand()
вместоrand()
.
Юзабилити
Шаблон миграций теперь по умолчанию использует safeUp()
и safeDown()
. В том случае, когда изменения схемы в транзакции не поддерживаются (например, MySQL), изменения применяются без транзакций.
Различные компоненты фреймворка обзавелись значениями по умолчанию:
yiidataSqlDataProvider
теперь считаем записи самостоятельно в том случае, когдаtotalCount
не указан.- Провайдеры данных автоматически выставляют ID. Больше нет необходимости указывать его для случая когда несколько провайдеров с постраничной разбивкой используется на одной странице.
- Фильтр для
yiigridDataColumn
автоматически генерится как выпадающий список в том случае, еслиformat
выставлен вboolean
.
Команда yii cache
начала предупреждать о том, что она не может очистить кеш APC из консоли.
yiifiltersAccessRule
теперь позволяет передать параметры в функцию проверки роли.
Производительность
- В
yiiwebUrlManager
добавлена поддержка кеширования вызововyiiwebUrlRule::createUrl()
в случае использования правил с умолчаниями. - В DB command Добавлена опция для отключения логирования и профайлинга.
yiidataActiveDataProvider
не делает запросы в том случае, когда количество моделей равно нулю.
Всякое
StringHelper
научился работать с URL-безопасным base64 через методы encode()/decode(). Это может быть полезно для различных токенов.
yiihelpersHtml::img()
теперь позволяет указать srcset
:
[php]
echo Html::img('/base-url', [
'srcset' => [
'100w' => '/example-100w',
'500w' => '/example-500w',
'1500w' => '/example-1500w',
],
]);
У yiiwidgetsLinkPager
можно рендерить кнопку текущей страницы как disabled. Для этого необходимо выставить disableCurrentPageButton
в true.
Контроль доступа и валидаторы стали требовать меньше зависимостей:
yiifiltersAccessControl
теперь может использоваться без компонентаuser
.- Валидаторы больше не требуют
Yii::$app
.
Автор: SamDark