Вышла версия 2.0.9 PHP-фреймворка Yii. Минорный релиз содержит около 60 небольших улучшений и исправлений. Инструкции по установке можно найти на официальном сайте.
В данной версии есть два изменения, которые, хоть это и маловероятно, могут затронуть ваши приложения. Ознакомьтесь с UPGRADE.md.
Спасибо сообществу Yii за пулл-реквесты и обсуждения.
Этот релиз вышел благодаря вам!
За разработкой фреймворка можно наблюдать на GitHub. Также у нас есть Twitter
и Facebook.
Далее мы рассмотрим самые интересные улучшения подробней. Полный список изменений и исправлений можно найти в CHANGELOG.
Фильтр action
yiibaseActionFilter
теперь поддерживает маски для only
и except
, что полезно когда
фильтр навешивается на модуль или приложение целиком:
return [
'as filter' => [
'class' => 'appfiltersSomeFilter',
'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
Провайдеры данных и виджеты
Все улучшения в данном релизе касаются заголовков. В yiidataArrayDataProvider
добавили свойство $modelClass
, через которое можно указать модель для получения заголовков полей. В дополнение yiigridDataColumn
, который определяет поведение для всех столбцов с данными, теперь пытается получить заголовки из filterModel
грида.
Рефакторинг
Из интерфейса ManagerInterface
RBAC выделили CheckAccessInterface
, который может быть полезен при реализации своей проверки доступа.
yiiwebUser::loginByCookie()
отрефакторен для большей расширяемости.
Asset-ы
При перечислении файлов в пакетах asset-ов теперь можно задать путь в null
. В этом случае файлы не регистрируются. Это полезно, например, для регистрации дополнительных файлов для рабочего окружения:
namespace commonassets;
use yiiwebAssetBundle;
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,
];
}
Логирование
yiilogTarget::$logVars
теперь можно настроить более тонко:
_SESSION
— пишем глобальную переменную сессии. Всё как и было._SESSION.id
— пишем толькоid
из сессии.!_SESSION.secret
— не пишем ключsecret
из сессии.
Логика такой фильтрации вынесена в yiihelpersArrayHelper::filter()
. При необходимости можно использовать у себя.
Markdown
Тип синтаксиса по умолчанию для yiihelpersMarkdown
теперь можно задать через $defaultFlavor
.
Автор: SamDark