Нам очень приятно объявить о выходе версии 2.0.1 PHP фреймворка Yii. Подробнее о том, как установить эту версию или обновиться на неё читайте на странице http://www.yiiframework.com/download/.
Версия 2.0.1 — патч-релиз ветки 2.0, содержащий около 90 небольших улучшений и исправлений. Полный список изменений можно почитать на GitHub. Кроме улучшений самого кода была проделана значительная работа по документации. Особенно по полному руководству по Yii 2.0, переводимому на множество языков. Спасибо всем, кто подарил нам часть своего драгоценного времени улучшая Yii.
За разработкой фреймворка можно следить, поставив звёздочку или нажав watch на странице проекта на GitHub. Также можно подписаться на Twitter и присоединиться к группе в Facebook.
Далее будут рассмотрены самые важные изменения.
Принудительная конвертация ресурсов
Через asset bundle можно конвертировать ресурсы автоматически. Например, LESS в CSS. Тем не менее, отслеживать все изменения в исходных файлах довольно затратно. Особенно когда сделан импорт одного ресурса в другом. В подобных случаях можно конвертировать ресурсы принудительно. Для этого компонент assetManager
настраивается следующим образом:
[
'components' => [
'assetManager' => [
'converter' => [
'forceConversion' => true,
]
]
]
];
Выбор подзапросов
Построитель запросов поддерживает подзапросы во многих местах. Теперь и в SELECT
:
$subQuery = (new Query)->select('COUNT(*)')->from('user');
$query = (new Query)->select(['id', 'count' => $subQuery])->from('post');
// $query represents the following SQL:
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
Предотвращение повторной загрузки CSS при AJAX запросах
В Yii уже были средства для предотвращения повторной загрузки JavaScript при AJAX запросах. Теперь есть и для CSS. Для использования данной возможности требуется регистрация YiiAsset
как показано ниже:
yiiwebYiiAsset::register($view);
Очистка кеша схемы базы данных
Мы добавили новую команду для очистки кеша схемы базы данных. Она будет полезна для выкладывания кода на рабочие серверы. Команда запускается следующим образом:
yii cache/flush-schema
Улучшения в хелперах
Метод Html::cssFile()
теперь поддерживает опцию noscript
, предназначенную для оборачивания генерируемого тега link
в тег noscript
. Данную опцию также можно использовать при настройке AssetBundle::cssOptions
. К примеру:
use yiihelpersHtml;
echo Html::cssFile('/css/jquery.fileupload-noscript.css', ['noscript' => true]);
Ранее StringHelper::truncate()
поддерживал обрезку простой строки до заданного количества символов или слов. Теперь поддерживается и HTML, который при обрезке остаётся полностью валидным.
Класс Inflector
обзавёлся новым методом sentence()
, собирающим массив слов в предложение. Например:
use yiihelpersInflector;
$words = ['Spain', 'France'];
echo Inflector::sentence($words);
// output: Spain and France
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words);
// output: Spain, France and Italy
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words, ' & ');
// output: Spain, France & Italy
Улучшения расширения Bootstrap
CSS фреймворк Bootstrap обновлён до версии 3.3.x. Если вы хотите использовать старую версию, можете указать её явно в composer.json
проекта.
В виджеты Bootstrap добавлены новые свойства, подробно описанные в документации по API.
yiibootstrapButtonDropdown::$containerOptions
.yiibootstrapModal::$headerOptions
.yiibootstrapModal::$footerOptions
.yiibootstrapTabs::renderTabContent
.yiibootstrapButtonDropdown::$containerOptions
.
Улучшения поддержки MongoDB
Операция findAndModify
теперь поддерживается как yiimongodbQuery
, так и yiimongodbActiveQuery
. К примеру:
User::find()->where(['status' => 'new'])->modify(['status' => 'processing']);
Запросы к MongoDB теперь отображаются на отладочной панели. Чтобы её использовать следуют настроить отладчик следующим образом:
[
'class' => 'yiidebugModule',
'panels' => [
'mongodb' => [
'class' => 'yiimongodbdebugMongoDbPanel',
]
],
]
Улучшения расширения Redis
Расширение Redis теперь поддерживает работу через сокеты UNIX, что часто на 50% быстрее работы через TCP. Соединение настраивается следующим образом:
[
'class' => 'yiiredisConnection',
'unixSocket' => '/var/run/redis/redis.sock',
]
Автор: SamDark