Новости Yii 2020, выпуск 6

?v=1

Всем привет!

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

Активность на официальном форуме и форуме yiiframework.ru стала совсем низкой если сравнивать со временами Yii 1 и Yii 2. Сообщество перешло в разные социальные сети и чаты.
Я думаю, что такая миграция — это плохо. В соцсетях и чатах практически невозможно найти предыдущие ответы. Одни и те же вопросы повторяются практически каждый день и ответы не оседают в поиске. Почти уверен, что тот, кто первым
начнёт собирать вопросы и ответы и публиковать их как статьи в wiki или посты в блоге, станет довольно популярным.

А теперь перейдём к тому, что же интересного случилось с последнего выпуска.


Yii 1

Со мной связались Onetwist Software и предложили добавить поддержку PHP 8 в Yii 1.1 в обмен на пополнение фонда Yii (из которого мы частично финансируем Yii 3). В итоге в master версии 1.1 теперь есть поддержка PHP 8. Релиза пока не было. Ждём баг-репортов. Также:


  • Пайплайны перетащили с TravisCI на GitHub actions.
  • Тесты запускаются на версиях от PHP 5.3 до PHP 8.0. Пришлось пропатчить старый PHPUnit, но в итоге всё заработало. Части патча пригодятся и для Yii 2.

Из других новостей Yii 1.1, Marco van 't Wout, давний пользователь Yii, вызвался разбирать тикеты и, вероятно, неофициально поддерживать Yii 1.1 после планируемого окончания поддержки. Посмотрим как пойдёт…


Yii 2

Мы постепенно переводим шаблоны приложения и расширения Yii 2 на GitHub actions. Это позволит нам нормально работать над будущими релизами.


Yii 3

2020 год не прост и много чего идёт не по плану. Вероятно, сдвинутся предполагаемые даты релиза, о которых я уже несколько раз неосторожно заявил. Тем не менее, публичный API меняется всё меньше, и значительная часть кода направлена на исправление ошибок и мелкие доработки, а не на перепроектирование API. Конечно, некоторые части, включая конфигурацию,
всё ещё сильно меняются. Конфигурацией я пока не вполне доволен.

Команда выпустила стабильные версии некоторых пакетов. Все они фреймворко-независимые и могут быть использованы в любом PHP-приложении:

Готовятся и другие релизы.

Ниже разберём интересные изменения и дополнения.


Тесты и причёсывание


  • PHP 8 был добавлен как поддерживаемая версия в composer.json всех пакетов. Большинство уже совместимы, но пока не все.
  • После довольно длительного использования phan мы переходим на Psalm. Он более популярный и поддерживается PhpStorm.
  • Для многих пакетов реализованы дополнительные тесты, во многих пакетах тесты значительно улучшены на основе результатов мутационного тестирования через Infection. Вместе с общей зачисткой исправлено значительное количество ошибок.
  • Был создан пакет для поддержки тестов. Сейчас он используется командой Yii 3 для самого фреймворка, но, вероятно, его можно будет использовать и в своих приложениях.


Пакеты


  • Был создан пакет yiisoft/yii-event. Он предоставляет конфигуратор для событий и используется как в веб-приложении, так и в консоли.
    Для конечного пользователя это выражается, прежде всего, в том, что зависимости автоматически подставляются в обработчики событий.
  • Пакет data response был выделен из yii-web. Он даёт возможность отвечать сырыми данными, которые форматируются в XML, JSON и т.д. позже.
  • Появился новый пакет request body-parser. В нём middleware для разбора тела запроса в зависимости от content-type.
  • Доработан пакет Bulma. Сейчас он используется для оформления шаблона приложения по умолчанию.
  • Главный пакет очередей практически стабилизировался. Готова начальная реализация драйвера для AMQP.
  • Улучшена структура пакета валидации.
  • В интеграции с Cycle ORM появилась команда cycle/schema/clear и фильтруемый data reader.
  • Продолжается зачистка слоя абстрации над базами данных и его драйверов. Выглядят пакеты всё лучше. Очень вероятно, что они будут готовы к релизу основного фреймворка.
  • В роутере реализовано сопоставление по хосту.
  • В диспетчере событий заменили подход с friendly-классом на более понятный.
  • В формах теперь поддерживаются вложенные атрибуты (через разделитель-точку).
  • Cookies переехали из yii-web в отдельный пакет.
  • На основе применения с Cycle ORM почищены интерфейсы в пакете data.
  • В пакет arrays добавлены дополнительные модификаторы. Плюс он подвергся лёгкому рефакторингу и был покрыт дополнительными тестами.
  • Роутер стал более гибким. Появилась возможность заменить то, как запускается совпавший маршрут.
  • Конфигурацию валидатора теперь можно экспортировать в виде массива. Это полезно для сериализации правил в JSON и передачу фронтенд-части для клиентской валидации.
  • В пакете по работе с файлами появилась возможность очистить директорию не удаляя её.
  • CSRF переехал в отдельный пакет из yii-web и прилично изменён.
  • То же произошло с сессиями.
  • В пакет миграций добавлен интерфейс RevertibleMigrationInterface.
  • Из Yii 2 портирован слой для работы с Redis.
  • Улучшен сбор отладочных данных. API отладчика практически готов. В процессе разработки черновая версия просмотрщика данных на Angular в процессе. Нам всё ещё предстоит придумать, как удобно реализовать предоставление панелей сторонними пакетами, но, в остальном, всё двигается неплохо.
  • Готов план по изменению архитектуры перевода сообщений. Реализация в процессе.


Демо приложение и шаблон приложения

Основные задачи, над которыми мы работаем, показаны на доске в Trello. Там есть и те, которых нет на GitHub. Например, редизайн страницы ошибки.

Если хотите присоединиться к разработке, пишите мне в почту, на форум, в Telegram или по любому другому каналу.


Команда

Команда ещё выросла. Текущий состав есть на сайте:

Также на страницу был добавлен Дмитрий Дерепко. На самом деле над Yii 3 он работает уже не мало, а вот на страницу мы как-то забыли его добавить :)


Новые и переработанные внутренние соглашения:


Обновлённые страницы в руководстве по фреймворку:


Другие новости


  • На YiiPowered уже 597 проектов. Если вы не добавили свои — добавляйте. Можете даже не загружать скриншоты. Они подтянутся с реального сайта ночью.


Рекомендации к чтению


️ Спасибо!

Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится.

Отдельное спасибо тем, кто помог Yii 3 кодом:

Также спасибо Ihor Sychevskyi за улучшения сайта yiiframework.com.

© Habrahabr.ru