Yii 2.0.16


    Команда PHP-фреймворка Yii выпустила версию 2.0.16, содержащую более сотни исправлений и немного улучшений. Исправлены несколько проблем с безопасностью.


    Ветка Yii 2.0 достигла заморозки более чем год назад, что означает что в неё принимаются главным образом исправления. Сделано это было чтобы позволить команде Yii сфокусироваться на Yii 3. В самом конце этого поста есть чуть больше информации про Yii 3.


    В данный релиз вошли несколько изменений, которые могут повлиять на существующие приложения. Обязательно прочитайте UPGRADE.md.


    Огромное спасибо членам сообщества Yii, которые участвующим в разработке. Без вас такой масштабный проект был бы невозможен. Отдельное спасибо переводчикам, поддерживающим документацию в актуальном состоянии.


    Ниже приведены наиболее интересные улучшения, которым всё-таки удалось просочиться в релиз. Полный список, как обычно, можно посмотреть в CHANGELOG.


    Active Record


    Salem Ouerdani, @tunecino добавил behavior для optimistic locking.


    Optimistic locking позволяет нескольким пользователям одновременно редактировать запись и избегать потенциальных конфликтов на стороне сервера. В случае, когда пользователь пытается сохранить правки на основе устаревших данных (потому что другой пользователь уже сохранился), кидается StaleObjectException, а обновление или удаление не делается.


    Сам механизм такой блокировки был реализован в первых версиях Yii, но использовать его правильно было не так просто. Теперь просто.


    Документацию можно найти в официальном руководстве
    и API OptimisticLockBehavior.


    Миграции


    Консольный генератор миграций теперь по умолчанию использует префиксы таблиц. Если вы хотите изменить это, то можете выставить yii\console\controllers\MigrateController::useTablePrefix в false в конфиге консольных команд.


    Базы данных


    • Драйвер MySQL теперь поддерживает точность до доли секунды для временных типов (требуется MySQL >= 5.6.4).
    • Драйвер Oracle теперь поддерживает сброс последовательностей.

    Хелперы


    • yii\helpers\Inflector научился корректно работать с UTF-8.
    • Добавлен флаг yii\mutex\FileMutex::$isWindows для шар Windows на гостевых машинах Unix.
    • Объекты yii\helpers\UnsetArrayValue, yii\helpers\ReplaceArrayValue теперь могут быть восстановлены после сериализации при помощи var_export().

    GridView


    Добавлена опция $filterOnFocusOut, определяющая должна ли производиться фильтрация при потере фокуса.


    jQuery


    Теперь можно установить jQuery 3.3.


    Mutex


    • Частота попыток получения блокировки yii\mutex\FileMutex::acquireLock() увеличена в том случае если предоставлен $timeout.
    • Добавлена поддержка $timeout в yii\mutex\PgsqlMutex::acquire().

    Исправления безопасности


    Были исправлены две проблемы с безопасностью:


    • CVE-2018-14578: обход проверки CSRF токена в \yii\web\Request::getMethod()
    • CVE-2018-19454: лишнее логирование конфиденциальной информации в \yii\log\Target

    Шаблоны приложений


    • Конфиги Codeception были почищены как в шаблоне basic, так и в advanced.
    • В шаблон Advanced добавлен простой конфиг для Docker.
    • Шаблон Advanced теперь требует более новую версию Codeception, которая работает только начиная с PHP 7.0. Старые приложения будут работать как прежде.

    Немного о Yii 3.0


    Следующей мажорной версией Yii будет 3.0. Подробный анонс будет позже, а пока кратко:


    Обновлённая архитектура: фреймворк разбит на отдельные пакеты.
    Это позволит собирать из них то, что вам нужно.


    JavaScript-независимый: вместе с реорганизацией исходного кода Yii отвязывается от JavaScript-фреймворка в ядре.
    Ключевые пакеты Yii не требуют jQuery.


    Совместимость с PSR: Yii 3 будет следовать рекомендациям PHP-FIG. Уже реализованы многие PSR: логирование, кеш, DI и другие.


    Yii 3.0 находится в стадии активной разработки. Подробный анонс будет сделан по достижению альфа-версии.

    Поделиться публикацией

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

    Комментарии 17

      +1
      Спасибо.
      Ждём с нетерпением Yii3!
      Успехов!
        +1
        Спасибо!
        Приятно видеть, что фреймворк развивается.

        А почему компоненты для 3.0, решено было назвать yii-core и yii-rest, а не скажем yii3-core и yii3-rest?
          0

          Потому что мы перешли на SemVer и если будем активно релизить улучшения, скоро будет Yii 37.0.0. Цифра в названии плавно перестанет играть какую-либо значительную роль.

            0
            а в след версии yii3.1-core?
              0
              Это я к тому, что для первой и второй ветки, все расширения именовались с префиксом «yii-» и «yii2-» соответсвенно, а в третьей снова вернулись к «yii-». Будут ли сложности, при поиске расширения под соответствующую версию фреймворка?
                0

                Не должно быть.

            +1
            Доброго времени суток!
            Спасибо что не прекращаете работу на фреймворком!
            Будем ждать новых версий и релизов!
              +1

              Не плохие изменения. Очень хотелось-бы чтоб фреймворк разбили на мелкие компоненты, как хелперы, валидаторы, orm, ui. Понятное дело что будут зависимости между модулями. Хотнлось-бы иметь возможность использовать какой-то компонент не затягивая при этом весь фреймворк и бутсрапя yii core

                0

                В какой-то степени уже разбили, но не в пух и прах...

                0
                Будут ли какие-то изменения в Моделях, чтобы они не превращались в свалку из rules/attributeLabels/AR/Данных без инкапсуляции, чтобы они были хоть как-то пригодны для проектов у которых срок жизни более одного месяца?
                  0

                  Несмотря на текущую инкапсуляцию сейчас, непригодность моделей для проектов более месяца — явное преувеличение. Тот же Stay.com вполне себе неплохо жил с моделями на Yii 1.1 6 лет. По делу:


                  1. Представление данных попробуем вытащить из model.
                  2. rules — правила валидации и вполне относятся к данным.
                  3. ORM делать не планируем.
                    0
                    По поводу инкапсуляции — будет ли возможность сделать private поля в модели/AR без возможности доступа к ним через всякую магию?
                    Печально на счёт ORM. Правильно ли я понимаю что в Yii3 текущая версия AR будет отдельным компонентом и его можно будет легко выпилить/не устанавливать в свое приложение?
                      0

                      На тему гидрации… возможно. Пока не уверен.


                      Да, AR отдельный пакет.

                      0

                      Правила валидации скорее относятся к формам, для ActiveRecord ничего особо не остается. И labels тоже. Для грида их лучше в первую очередь из filterModel брать.

                        0
                        > Правила валидации скорее относятся к формам
                        Вообще, я бы сказал тогда уж что к Реквесту, а не к форме. И да, валидировать данные без модельки было бы возможно удобно, но это спорно. В текущей ситуации я просто отдельную модельку создаю для реквеста, и валидирую через неё.

                        Всякими штучками для фронта(grid view, active forms), я не пользуюсь и пользоваться собственно не желаю, ибо не вижу смысла. Когда поверх этих виджетов для кодогенерации запиливаешь кучу кастомного кода, разбираться в этом новичку(да и не новичку) весьма и весьма нетривиальная задача, так что очень хотелось бы иметь удобную возможность из своего приложения их повыпиливать.
                    0
                    Переход с 2 на 3 будет сложный, другими словами, 3 для новых проектов?
                      –2

                      Смотря сколько времени и денег можете позволить себе потратить на переход.

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

                    Самое читаемое