37,1
рейтинг
8 декабря 2014 в 11:48

Разработка → Yii 2.0.1

Yii*


Нам очень приятно объявить о выходе версии 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' => [
                'forceConvert' => 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 как показано ниже:

yii\web\YiiAsset::register($view);


Очистка кеша схемы базы данных



Мы добавили новую команду для очистки кеша схемы базы данных. Она будет полезна для выкладывания кода на рабочие серверы. Команда запускается следующим образом:

yii cache/flush-schema


Улучшения в хелперах



Метод Html::cssFile() теперь поддерживает опцию noscript, предназначенную для оборачивания генерируемого тега link в тег noscript. Данную опцию также можно использовать при настройке AssetBundle::cssOptions. К примеру:

use yii\helpers\Html;
echo Html::cssFile('/css/jquery.fileupload-noscript.css', ['noscript' => true]);


Ранее StringHelper::truncate() поддерживал обрезку простой строки до заданного количества символов или слов. Теперь поддерживается и HTML, который при обрезке остаётся полностью валидным.

Класс Inflector обзавёлся новым методом sentence(), собирающим массив слов в предложение. Например:

use yii\helpers\Inflector;

$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.

  • yii\bootstrap\ButtonDropdown::$containerOptions.
  • yii\bootstrap\Modal::$headerOptions.
  • yii\bootstrap\Modal::$footerOptions.
  • yii\bootstrap\Tabs::renderTabContent.
  • yii\bootstrap\ButtonDropdown::$containerOptions.


Улучшения поддержки MongoDB



Операция findAndModify теперь поддерживается как yii\mongodb\Query, так и yii\mongodb\ActiveQuery. К примеру:

User::find()->where(['status' => 'new'])->modify(['status' => 'processing']);


Запросы к MongoDB теперь отображаются на отладочной панели. Чтобы её использовать следуют настроить отладчик следующим образом:

[
    'class' => 'yii\debug\Module',
    'panels' => [
        'mongodb' => [
            'class' => 'yii\mongodb\debug\MongoDbPanel',
        ]
    ],
]


Улучшения расширения Redis



Расширение Redis теперь поддерживает работу через сокеты UNIX, что часто на 50% быстрее работы через TCP. Соединение настраивается следующим образом:

[
    'class' => 'yii\redis\Connection',
    'unixSocket' => '/var/run/redis/redis.sock',
]
Александр Макаров @SamDark
карма
286,4
рейтинг 37,1
PHP, Yii, Android

Похожие публикации

Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • 0
    Команду миграции так и не научили в модули ходить?
    • +1
      Умеет же

      php yii migrate --migrationPath=@yii/to/module
      
      • 0
        Да, умеет, но я про другое. Чтобы одной командой со всех включенных модулей миграции собирались. Писать каждый раз для каждого модуля такую конструкцию, немного удручает.
  • 0
    Отличная новость!
    А консольный gii уже умеет контроллеры / команды генерировать по-всякому?
    • +2
      Что значит «по-всякому»?
      • 0
        Консольный gii неверно генерировал web-контроллеры — не в ту папку.
        • 0
          Да, на эту тему тоже что-то было, но я лично не проверял.
  • +1
    yii cache/flush-schema — очень круто, спасибо!
    раньше в миграциях приходилось писать что-то типа
    $this->refreshTableSchema($this->table);
  • 0
    Насчет монго… Неплохо бы сделать полноценными атрибуты, не только верхнего уровня но и в сабдокументах, например, указывая их через "." cart.goods.price
  • +1
    Inflector::sentence() очень не хватало. Спасибо!
  • +1
    Небольшая ремарка:

    Не 'forceConversion', а 'forceConvert'
    • 0
      Поправил. Спасибо!
  • 0
    Посоветуйте плиз учебник по Yii 2.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.