Вышла версия 2.0.9 PHP-фреймворка Yii. Минорный релиз содержит около 60 небольших улучшений и исправлений. Инструкции по установке можно найти на официальном сайте.
В данной версии есть два изменения, которые, хоть это и маловероятно, могут затронуть ваши приложения. Ознакомьтесь с UPGRADE.md.
Спасибо сообществу Yii за пулл-реквесты и обсуждения.
Этот релиз вышел благодаря вам!
За разработкой фреймворка можно наблюдать на GitHub. Также у нас есть Twitter
и Facebook.
Далее мы рассмотрим самые интересные улучшения подробней. Полный список изменений и исправлений можно найти в CHANGELOG.
Фильтр action
\yii\base\ActionFilter теперь поддерживает маски для only и except, что полезно когда
фильтр навешивается на модуль или приложение целиком:
return [
'as filter' => [
'class' => 'app\filters\SomeFilter',
'only' => [
'particular/*', // все действия контроллера 'particular'
'*/captcha', // все действия 'captcha' всех контроллеров
],
],
// ...
];Улучшения производительности
- Улучшили производительность перевода сообщений при использовании базы данных. Добавили нужные индексы.
- Схема Oracle теперь считывается быстрее.
Построитель схемы и миграции
Был улучшен построитель схемы, который используется в миграциях. Добавили новый метод null() чтобы указывать возможность записи null явно. Метод применяется автоматически, если значение по умолчанию — null.
$type = $this->string(42)->null();Также добавили метод для своего SQL:
$type = $this->string(15)->notNull()->append('collate ascii_bin')->append('character set ascii');Синтаксис команды для генерации миграций был немного изменён: _table и _column теперь обязательны:
./yii migrate/create create_user_table
./yii migrate/create add_name_column_to_user_tableПровайдеры данных и виджеты
Все улучшения в данном релизе касаются заголовков. В \yii\data\ArrayDataProvider добавили свойство $modelClass, через которое можно указать модель для получения заголовков полей. В дополнение \yii\grid\DataColumn, который определяет поведение для всех столбцов с данными, теперь пытается получить заголовки из filterModel грида.
Рефакторинг
Из интерфейса ManagerInterface RBAC выделили CheckAccessInterface, который может быть полезен при реализации своей проверки доступа.
\yii\web\User::loginByCookie() отрефакторен для большей расширяемости.
Asset-ы
При перечислении файлов в пакетах asset-ов теперь можно задать путь в null. В этом случае файлы не регистрируются. Это полезно, например, для регистрации дополнительных файлов для рабочего окружения:
namespace common\assets;
use yii\web\AssetBundle;
class ReactAsset extends AssetBundle
{
public $sourcePath = null;
public $js = [
YII_ENV_DEV ? "//fb.me/react-15.0.1.js" : "//fb.me/react-15.0.1.min.js",
YII_ENV_DEV ? "//fb.me/react-dom-15.0.1.js" : "//fb.me/react-dom-15.0.1.min.js",
YII_ENV_DEV ? "//cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser.js" : null,
];
}Логирование
\yii\log\Target::$logVars теперь можно настроить более тонко:
_SESSION— пишем глобальную переменную сессии. Всё как и было._SESSION.id— пишем толькоidиз сессии.!_SESSION.secret— не пишем ключsecretиз сессии.
Логика такой фильтрации вынесена в \yii\helpers\ArrayHelper::filter(). При необходимости можно использовать у себя.
Markdown
Тип синтаксиса по умолчанию для yii\helpers\Markdown теперь можно задать через $defaultFlavor.
