Pull to refresh

Comments 59

UFO just landed and posted this here
UFO just landed and posted this here
А какие там изменения обратно несовместимы?

Список изменений, на которые нужно обратить внимание при обновлении описан в UPGRADE.md для 2.1. Перед релизом мы дополнительно структурируем этот список и напишем гайд по обновлению.

Я имел в виду версию 2.0.14, думал, что автор комментария имел в виду несовместимые изменения по 2.0.14 и предположил, что это уже не минорный релиз, который нужно помещать в 2.1.x. Запутался)
UFO just landed and posted this here
ИМХО самое важное из всего что тут написано — плохие новости:
прекратится поддержка yii 2.0 и придется перелопачивать половину проекта (а может и больше) из-за потери обратной совместимости.

Yii для себя выбирал именно по причине стабильности (после перехода с 1 на 2 версию он до сих пор работает нормально без проблем при обновлениях). А теперь вот какой подарок. И фирмы у которых большие проекты скорее всего будут откладывать переход на yii2.1 до последнего (многие на 1 версии еще живут) ибо бизнесу нужна стабильность и не самые свежие обновления. А ко мне будут требования знаний и 2.0 и 2.1 версий.

Друзья, сделайте что-нибудь что бы переход на 2.1 был не столь болезненным. Спасибо.

Уже делаем. В 2.0 всё что нужно помечается как @deprecated, пишется попутно UPGRADE. Ну и это не 1.1 → 2.0. Не такие страшные изменения будут.

Стабильность — это хорошо, но 2.0 уже 4 года. Пора.

А вы не хотите перейти на эволюционную модель обновлений? А то честно говоря не догоняю чего жать — либо релизов раз в 4 года, либо чаще, но меньше изменений.

Так это она и есть в лайт-виде. Это будет не 1.1 → 2.0 когда надо переписать всё, но и не минорный релиз, который можно просто накатить.

прекратится поддержка yii 2.0 и придется перелопачивать половину проекта (а может и больше) из-за потери обратной совместимости.

нет, написано, что в будущем (пока неизвестно когда) прекратится поддержка продукта, которому уже 4 года. По темпам разработки 2.1 это еще как минимум год, да и после релиза 2.1 не думаю, что поддержку сразу закроют.

Добавлю, что в отличии от перехода 1.1 → 2.0, обновление 2.0 → 2.1 – это эволюционное, а не революционное изменение. Основные цели релиза:


  • отказ от поддержки устаревших версий PHP, которые мешают использованию новых возможностей в коде ядра и усложняют поддержку проекта в долгосрочной перспективе, включая вопросы безопасности.
  • вынос из ядра в отдельные пакеты опциональных составляющих вроде jQuery, DI.
  • архитектурные улучшения и изменение публичного API там, где это требуется для реализации новых возможностей.

Мы подготовим детальный гайд по обновлению приложения, чтобы процесс был однозначен и понятен.

extension-ы, тем не менее, придётся обновлять...

Очень минимальные изменение, у меня ушло на весь проект 15 минут для замены Object на BaseObject
Я делал так: Открыл старый добрый тотал командр Alt+F7 поиск Object -> файлы на панель, далее F4 и через notepad++ быстренько подправил.

можно еще перекинуть все файлы на редактор и через поиск и замену «найти и заменить во всех открытых вкладках».

А если воспользоваться IDE PHPStorm, то можно провести поиск использования класса Object и везде поменять его на BaseObject.

Можно, но когда аппарат не мощный приходятся использовать старую школу.

Вы правы. Но так как это моя основная работа — веб разработка, то на железо не скуплюсь. Окупается почти сразу

и придется перелопачивать половину проекта (а может и больше) из-за потери обратной совместимости

Так получите за это деньги :)

Поскорей бы yii-bootstrap перешёл на 4 версию

Добавлена поддержка JSON для MySQL и PostgreSQL

В доке написано, что
After data population, the value from JSON column will be automatically decoded from JSON according to standard JSON decoding rules.

Это прям автоматом включится? То есть если у нас есть модели с jsonb полями и мы ожидаем что там текст, то после апдейта нам там начнут объекты приезжать?
Увлекательно. Будет нехилым таким препятствием для обновления на 2.0.14.

Для тех, кто уже успел JSON использовать — вполне вероятно. Мы не специально...

Видимо, придётся просто переопределить постгресовую ColumnSchema и убрать там эти касты.
проще тогда уж в композере написать, что yii нужен версии 2.0.13.1 и запланировать миграцию на 2.1…
Можно и так, но для в целом и для 2.1 никто не мешает оставить переопределение, если переписывание логики не покажется рентабельным.
а можно вопрос — а нахзачем вы тогда это добавили в 2.0.* ветку то? да еще и без возможности отключения этого поведения?
или вы не понимаете, что все проекты, которые уже использовали json-поля, сломали этим обновлением? И если в геттерах еще как-то можно было проверять, а не массив ли там уже в поле, то в сеттере это поведение срабатывает в методе save() и все гарантированно падает, потому что JsonExpression расстраивается до exception, получив строку вместо массива, а преобразование выполнялось в местах разных, но самое позднее — это был метод beforeSave()…

Так вышло. Протащить слом обратной совместимости 2.0.14 специально не планировали. Именно этот кейс не рассматривали, хотя надо было...


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

Не рассматриваете вариант выпустить хотфикс, где отключите эту возможность? Все-таки минорный релиз не должен ломать BC

То что теперь не нужен JsonBehavior это, конечно, здорово, но могли бы уж точно предположить, что если пользователи ждут на входе строку, то выдавать в новой версии массив — совсем неправильно.

Расскажу, как это было. PR с изменениями на пути к JSON – это более 90 комментов, дифф на 71 файл и овер 3800 строк кода. Там перемешалось много контекстов изменений: исправление одновременно несколько старых проблем, добавление нескольких новых возможностей, оптимизация API, реорганизация кода. Делить его на много мелких не получалось, так как все задачи в рамках этого PR – взаимосвязаны. Вычитать вдумчиво и целиком такой PR не деле оказалось отдельной сложной задачей, на которую не хватало концентрации ни у кого кроме SamDark, за что ему отдельное спасибо.


Я понимаю, что мы (в больше мере – я) косякнули, а этот коммент – лишь попытка оправдаться, но не судите строго. Лучше приходите на GitHub – там всегда не хватает рук и свежего взгляда :)

Посоветовались. Сделаем в патч-релизе (будет скоро) возможность выключить.

Сделайте плз скорее, у нас весь проект рухнул из-за того что ~2.0.13 стояло

Интересно, как они тестировали или как у них работало, если при json string падает с исключением AR::save()

Логично что в тех "крупных" проектах просто не используется json в этом месте

Можно и добавить. issue создайте.

Внимание обновляющимся
Похоже, что сломался метод Query::select(): если вызвать его повторно, то вместо переназначения полей произойдет слияние с удалением указанных ранее полей.


Подробнее в issue: https://github.com/yiisoft/yii2/issues/15676

Спасибо за уведомление, исправлено в коммите 1b3526d8 и войдёт в патч-релиз 2.0.14.1

В конце статьи написали что ::className() deprecated, но в примере с CachableWidgetBehavior используете ::className() вместо ::class.

Привычка писать документацию и код с учётом того, что мы ещё поддерживаем PHP 5.4 :)

А есть идеи убрать всё что связано с HTML в отдельный пакет? Когда REST победит?

Идеи посещали всякие. И эта тоже. В 2.1 не планируется. REST не победит для определённых задач никогда. И не должен.

Извеняюсь, я не очень правильно выразился. Я имею в виду всякие GridView, ListView, ActiveForm, которые в рамках REST приложение просто висят мёртвым грузом. И есть ли идеи уйти от Jquery к Vue, React, Angular?

Идеи уйти от JQuery есть. В 2.1 зависимостей на него в ядре не будет. Виджеты выпиливаться в 2.1 не будут. От них в случае REST-only никаких проблем кроме скушанных ~100кб места на диске.

Написали бы лучше есчо один js-фреймворк!

Я про то, что JS-фреймворков уже достаточно. Смысла туда лезть с ещё одним никакого. Множество стилей кода, конкурентная среда. В PHP многие фреймворки стали неотличимы друг от друга. Это и хорошо и плохо одновременно и смысл пилить что-то своё, немного не как все, определённо есть. Авторы смотрят на соседей и лучше становятся от этого все фреймворки.

Спасибо за релиз. Некоторые вещи приходилось раньше писать руками.
Создал тикет на обновление.

Есть вопрос насчёт @deprecated.
Будет ли
::className()
заменён на
::class
в генераторах Gii в ветках 2.0? Вижу, что в ветке 2.1 уже заменили github.com/yiisoft/yii2-gii/blob/2.1/src/generators/model/Generator.php
Или всё-таки, пока используется совместимость с php-5.4, будет использоваться устаревший метод?
Sign up to leave a comment.

Articles