Yii 2.0.9

Вышла версия 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.

Комментарии (2)

  • 11 июля 2016 в 18:07 (комментарий был изменён)

    0

    Когда уже Yii перестанет генерировать длиннющие дублирующие where in запросы для join?
    • 11 июля 2016 в 18:11

      0

      А чем они вам мешают?

© Habrahabr.ru