Новости Yii 2021, выпуск 3
Привет, сообщество!
Это в очередной раз Александр и новости про PHP фреймворк Yii. Выпусков не было довольно долго, но это не потому, что ничего не происходит, а как раз наоборот: происходит всё и сразу. Над Yii3 работать всё приятней так как пакеты стабилизируются, а фреймворк становится более полным.
Фонд
Мы поучаствовали в эксперименте FundOSS по усилению финансирования OpenSource. Всего нас поддержали 49 человек на $813. FundOSS добавили до $3295 (минус комиссия Stripe). Это довольно хорошая сумма, которая позволит нам какое-то время выделять больше времени на развитие фреймворка. Спасибо, FundOSS, OpenCollective и, конечно, тем, кто нас поддерживает. Хочется, чтобы подобные эксперименты проводились почаще.
Сообщество
Дизайн и сайт
В прошлый раз я упомянул что компания awesomic пригласила нас использовать сервис бесплатно в качестве благодарности за Yii 2. С тех пор мы кое-чего успели. На странице «official logos and design» главного сайта можно найти логотипы, favicon-ы, общие гайдлайны и стандарт для диаграмм.
Также прямо на главную страницу добавлена ссылка «Looking for Yii 3 progress?». Надеюсь, это ещё немного разогреет интерес к Yii3 и выльется в прирост issue и pull request.
Yii 1
Был выпущен Yii 1.1.24. Поддержка первой ветки фреймворка продлена до 31.12.2023.
Yii 2
Готов большой набор обновлений:
В пакете для генерации документации по API выявлены серьёзные проблемы с PHP 8. Мы работаем над этим. А пока используйте для генерации документации PHP 7.
Yii 3
Релизы пакетов:
Я решил пока не заносить в список патч-релизы и не создавать на сайте новости про них. Это отнимает время, а контент там получается не сильно интересный.
Немного пакетов убили:
Сейчас главный фокус команды — yiisoft/factory и yiisoft/di. Они блокируют 11 и 31 релиз других пакетов соответственно.
Инфраструктура
Мы решили запускать тесты всех пакетов в полночь в дополнение к запуску по коммиту. Это позволит видеть, что какой-то пакет разломался из-за обновления зависимости. Ситуация не очень частая для стабильных пакетов, но лучше перестраховаться. Пока ночные тесты включены не для всех репозиториев.
Yii Config теперь требует Composer 2. Первая версия Composer не видит свежие пакеты на packagist и не позволяет поставить Yii 3.
Yii development tool
В процессе разработки встречаются разные неудобства при использовании инструментария разработки, которые мы исправляем:
Была добавлена команда
list
, которая показывает активные пакеты.Симлинки больше не создаются для неактивных пакетов.
Пакеты обрабатываются в алфавитном порядке.
Стало возможно работать с любыми пакетами, а не только с пакетами
yiisoft
.
Шаблоны приложений и демо
Мы переименовали «yii-demo» в просто «demo». На данный момент набор приложений и демо получается следующий:
yiisoft/demo — Классическая демка. HTML генерируется сервером.
yiisoft/demo-api — Демка REST API.
yiisoft/app — Шаблон приложения с классической генерацией HTML.
yiisoft/app-api — Шаблон приложения с REST API.
Минимальная версия PHP для всех шаблонов и демо поднята до PHP 8.0. Пакеты в этом плане остались без изменений и требуют 7.4+ так как могут использоваться отдельно.
Добавлена возможность прописывать бутстрап в config/bootstrap.php, config/bootstrap-web.php и config/bootstrap-console.php. Туда можно добавлять такие callable, как function (ContainerInterface $container): void
. Они запустятся на старте приложения.
Добавлена команда composer run serve
. Делат то же, что и ./yii serve
.
В общем несколько упростилась структура директорий. Мы работаем над тем, чтобы сделать её ещё проще.
DI и Factory
Как DI, так и factory сейчас блокируют релизы остальных пакетов, так что мы занимается, прежде всего, ими. Делается много рефакторинга и доработок:
Оба пакета стали более строгими. Добавили валидацию в режиме разработки, убрали много способов задавать defintion-ы.
Сообщения об ошибках стали более информативными.
Сильно улучшили покрытие кода тестами.
Контейнер:
Фабрика:
В
Factory::create()
остался только один аргумент, definition класса, который необходимо создать.Фабрика больше не реализует PSR
ContainerInterface
.Factory::get()
иFactory::has()
были удалены.Добавлено определение циклических ссылок.
Очереди
Упростили конфигурацию для простых случаев. Достаточно настроить брокер AMQP, а остальное заработает само.
Стало удобней настраивать каналы.
Адаптер AMQP теперь делает ack обработанным сообщениям.
HTML
Готовим 2.0.0. Будут новые теги, оптимизация генерируемого HTML и улучшение API.
Middleware dispatcher
Пакет практически готов к релизу. Мы ещё проверяем альтернативные идеи по его дизайну, но и текущий почти идеален.
Пакет обзавёлся инструкциями в readme.
Сильно повышена производительность. Middleware создаются только когда необходимо и кэшируются в памяти, что особо актуально для RoadRunner и Swoole.
Валидатор
Синтаксис валидаторов изменён:
// до
(new Number())->integer()->min(44);
// после
Number::rule()->integer()->min(44);
Yii Sentry
Создан пакет интеграции с Sentry. Sentry — сервис агрегации логов. Позволяет эффективно мониторить логи с продакшна. Поддерживаются и веб, и консоль.
Виджеты
Обработка ошибок
Конфиги
Дебаггер
После того, как мы убили версию под Angular получился следующий набор пакетов:
yiisoft/yii-debug собирает отладочную информацию из вашего приложения.
yiisoft/yii-debug-api раздаёт собранное через REST API.
yiisoft/yii-debug-viewer — новый клиент, который можно использовать и как подключаемый модуль и как отдельное приложение. Добавлять свои панель сильно проще, чем в версии под Angular. По сложности сравнимо с Yii2.
Viewer добавлен в шаблоны приложений и демо и доступен как http://127.0.0.1:8080/debug/viewer
, где 127.0.0.1:8080
— ваши локальные хост и порт.
Роутер
Были проведены как внутренний рефакторинг, так и изменения во внешнем API.
При настройке роутов IDE перестала подсказывать лишние методы.
Пользователю видно сильно меньше внутренностей.
Текущий роут доступен через отдельный сервис
Yiisoft\Router\CurrentRoute
.Добавлена возможность задавать хост для группы через
Group::host()
.Добавлена возможность задавать префикс для имени роута для всей группы
Group::namePrefix()
.
Новая и обновлённая документация
Также полностью обновлено руководство и README большинства пакетов.
Почитать и посмотреть
Спасибо!
Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится!
CraftCMS — Отличная OpenSource CMS на Yii2.
Onetwist Software — Услуги качественной разработки приложений.
SkillShare — Обучение новым навыкам.
Betteridge — Ювелирные изделия.
dmstr — Облачные решения на основе Docker.
HumHub — OpenSource решения для общения команды.
JetBrains — Отличные инструменты для разработки.
Skin.Club — Рынок скинов для CS: GO.
EFKO Group — фудтех, производство продуктов питания, и венчурные инвестиции. С недавнего времени ещё и ЭФКО Цифровые Решения, отдельная растущая сервисная IT-компания, которая планирует заниматься не только внутренними проектами ЭФКО.
Кроме перечисленных нас поддерживают отдельные разработчики и другие компании.
Отдельное спасибо тем, кто помог Yii 3 кодом: