- PVSM.RU - https://www.pvsm.ru -

Новости Yii 2021, выпуск 3

Привет, сообщество!

Это в очередной раз Александр и новости про PHP фреймворк Yii. Выпусков не было довольно долго, но это не потому, что ничего не происходит, а как раз наоборот: происходит всё и сразу. Над Yii3 работать всё приятней так как пакеты стабилизируются, а фреймворк становится более полным.

Новости Yii 2021, выпуск 3 - 1

Фонд

Мы поучаствовали в эксперименте FundOSS по усилению финансирования OpenSource [1]. Всего нас поддержали 49 человек на $813. FundOSS добавили до $3295 (минус комиссия Stripe). Это довольно хорошая сумма, которая позволит нам какое-то время выделять больше времени на развитие фреймворка. Спасибо, FundOSS, OpenCollective и, конечно, тем, кто нас поддерживает. Хочется, чтобы подобные эксперименты проводились почаще.

Сообщество

Дизайн и сайт

В прошлый раз я упомянул что компания awesomic [5] пригласила нас использовать сервис бесплатно в качестве благодарности за Yii 2. С тех пор мы кое-чего успели. На странице "official logos and design [6]" главного сайта можно найти логотипы, favicon-ы, общие гайдлайны и стандарт для диаграмм.

Также прямо на главную страницу добавлена ссылка "Looking for Yii 3 progress?". Надеюсь, это ещё немного разогреет интерес к Yii3 и выльется в прирост issue и pull request.

​ Yii 1

Был выпущен Yii 1.1.24. Поддержка первой ветки фреймворка продлена до 31.12.2023 [7].

​ Yii 2

Готов большой набор обновлений:

В пакете для генерации документации по API [18] выявлены серьёзные проблемы с PHP 8. Мы работаем над этим. А пока используйте для генерации документации PHP 7.

​ Yii 3

​ Релизы пакетов:

Я решил пока не заносить в список патч-релизы и не создавать на сайте новости про них. Это отнимает время, а контент там получается не сильно интересный.

Немного пакетов убили:

  • yiisoft/serializer.

  • yiisoft/container-proxy.

  • yiisoft/yii-debug-frontend (смотрите далее в секции "Debugger").

Сейчас главный фокус команды — yiisoft/factory [33] и yiisoft/di [34]. Они блокируют 11 и 31 релиз других пакетов соответственно.

Инфраструктура

Мы решили запускать тесты всех пакетов в полночь [35] в дополнение к запуску по коммиту. Это позволит видеть, что какой-то пакет разломался из-за обновления зависимости. Ситуация не очень частая для стабильных пакетов, но лучше перестраховаться. Пока ночные тесты включены не для всех репозиториев.

Yii Config [36] теперь требует Composer 2. Первая версия Composer не видит свежие пакеты на packagist и не позволяет поставить Yii 3.

Yii development tool

В процессе разработки встречаются разные неудобства при использовании инструментария разработки [37], которые мы исправляем:

  • Была добавлена команда list, которая показывает активные пакеты.

  • Симлинки больше не создаются для неактивных пакетов.

  • Пакеты обрабатываются в алфавитном порядке.

  • Стало возможно работать с любыми пакетами, а не только с пакетами yiisoft.

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

Мы переименовали "yii-demo" в просто "demo". На данный момент набор приложений и демо получается следующий:

  • yiisoft/demo [38] - Классическая демка. HTML генерируется сервером.

  • yiisoft/demo-api [39] - Демка REST API.

  • yiisoft/app [40] - Шаблон приложения с классической генерацией HTML.

  • yiisoft/app-api [41] - Шаблон приложения с REST API.

Минимальная версия PHP для всех шаблонов и демо поднята до PHP 8.0. Пакеты в этом плане остались без изменений и требуют 7.4+ так как могут использоваться отдельно.

Добавлена возможность прописывать бутстрап в config/bootstrap.php [42], config/bootstrap-web.php [43] и config/bootstrap-console.php [44]. Туда можно добавлять такие 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 [49]. Будут новые теги, оптимизация генерируемого HTML и улучшение API.

Middleware dispatcher

Пакет практически готов к релизу. Мы ещё проверяем альтернативные идеи по его дизайну, но и текущий почти идеален.

  • Пакет обзавёлся инструкциями в readme [50].

  • Сильно повышена производительность. Middleware создаются только когда необходимо и кэшируются в памяти, что особо актуально для RoadRunner и Swoole.

Валидатор

Синтаксис валидаторов изменён:

// до
(new Number())->integer()->min(44);

// после
Number::rule()->integer()->min(44);

Yii Sentry

Создан пакет интеграции с Sentry [51]. Sentry [52] - сервис агрегации логов. Позволяет эффективно мониторить логи с продакшна. Поддерживаются и веб, и консоль.

Виджеты

Обработка ошибок

Конфиги

  • Добавлена поддержка окружений [58].

  • Улучшено отслеживание конфигов при добавлении и удалении пакетов. Хэши хранятся в файле dist.lock.

  • Обновлена документация.

Дебаггер

После того, как мы убили версию под Angular [59] получился следующий набор пакетов:

  • yiisoft/yii-debug [60] собирает отладочную информацию из вашего приложения.

  • yiisoft/yii-debug-api [61] раздаёт собранное через REST API.

  • yiisoft/yii-debug-viewer [62] - новый клиент, который можно использовать и как подключаемый модуль и как отдельное приложение. Добавлять свои панель сильно проще, чем в версии под Angular. По сложности сравнимо с Yii2.

Viewer добавлен в шаблоны приложений и демо и доступен как http://127.0.0.1:8080/debug/viewer, где 127.0.0.1:8080 - ваши локальные хост и порт.

Роутер

Были проведены как внутренний рефакторинг, так и изменения во внешнем API.

  • При настройке роутов IDE перестала подсказывать лишние методы.

  • Пользователю видно сильно меньше внутренностей.

  • Текущий роут доступен через отдельный сервис YiisoftRouterCurrentRoute.

  • Добавлена возможность задавать хост для группы через Group::host().

  • Добавлена возможность задавать префикс для имени роута для всей группы Group::namePrefix().

​ Новая и обновлённая документация

Также полностью обновлено руководство [65] и README большинства пакетов.

​ Почитать и посмотреть

​ Спасибо!

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

  • CraftCMS [81] - Отличная OpenSource CMS на Yii2.

  • Onetwist Software [82] - Услуги качественной разработки приложений.

  • SkillShare [83] - Обучение новым навыкам.

  • Betteridge [84] - Ювелирные изделия.

  • dmstr [85] - Облачные решения на основе Docker.

  • HumHub [86] - OpenSource решения для общения команды.

  • JetBrains [87] - Отличные инструменты для разработки.

  • Skin.Club [88] - Рынок скинов для CS:GO.

  • EFKO Group [89] - фудтех, производство продуктов питания, и венчурные инвестиции. С недавнего времени ещё и ЭФКО Цифровые Решения, отдельная растущая сервисная IT-компания, которая планирует заниматься не только внутренними проектами ЭФКО.

Кроме перечисленных нас поддерживают отдельные разработчики и другие компании [90].

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

Автор: Александр Макаров

Источник [124]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/367211

Ссылки в тексте:

[1] эксперименте FundOSS по усилению финансирования OpenSource: https://opencollective.com/yiisoft/updates/fundoss-dontaion-amplification

[2] Мы запустили пред-релизную поддержку компаний: https://rmcreative.ru/blog/post/yii-3-pred-reliznaja-podderzhka-kompaniy

[3] Канал IRC переместился в libera: https://forum.yiiframework.com/t/irc-channel-moved-to-libera-chat/132382

[4] #yii3chronicles: https://t.me/yii3chronicles

[5] awesomic: https://www.awesomic.io/

[6] official logos and design: https://www.yiiframework.com/logo

[7] Был выпущен Yii 1.1.24. Поддержка первой ветки фреймворка продлена до 31.12.2023: https://www.yiiframework.com/news/369/yii-1-1-24-is-released-and-security-support-extended

[8] Yii 2.0.43: https://www.yiiframework.com/news/378/yii-2-0-43

[9] Auth client 2.2.11: https://www.yiiframework.com/news/379/auth-client-extension-2-2-11-released

[10] Bootstrap 2.0.11: https://www.yiiframework.com/news/380/bootstrap-extension-version-2-0-11-released

[11] Debug 2.1.18: https://www.yiiframework.com/news/381/debug-extension-2-1-18-released

[12] ElasticSearch 2.1.2: https://www.yiiframework.com/news/382/elasticsearch-extension-2-1-2-released

[13] Gii 2.2.3: https://www.yiiframework.com/news/383/gii-extension-2-2-3-released

[14] HTTP Client 2.0.14: https://www.yiiframework.com/news/384/http-client-extension-2-0-14-released

[15] MongoDB 2.1.12: https://www.yiiframework.com/news/385/mongodb-extension-2-1-12-released

[16] Smarty 2.0.10: https://www.yiiframework.com/news/386/smarty-extension-2-0-10-released

[17] Релизнуто расширение для Bootstrap 5: https://www.yiiframework.com/news/377/bootstrap-5-extension-version-2-0-0-released

[18] пакете для генерации документации по API: https://github.com/yiisoft/yii2-apidoc

[19] Yii event: https://www.yiiframework.com/news/365/yii-event-1-0-0

[20] Error handler: https://www.yiiframework.com/news/366/error-handler-1-0-0

[21] Assets: https://www.yiiframework.com/news/367/assets-1-0-0

[22] Rate limiter: https://www.yiiframework.com/news/370/ratelimiter-1-0-0

[23] Data response: https://www.yiiframework.com/news/371/data-response-1-0-0

[24] View: https://www.yiiframework.com/news/372/view-1-0-0

[25] Yii view: https://www.yiiframework.com/news/374/yii-view-1-0-0

[26] View Twig renderer: https://www.yiiframework.com/news/373/view-twig-renderer-1-0-0

[27] Mailer и адаптер для SwiftMailer: https://www.yiiframework.com/news/375/mailer-1-0-0-and-swiftmailer-1-0-0

[28] Email log target: https://www.yiiframework.com/news/376/email-log-target-1-0-0

[29] Cookies 1.2.0: https://www.yiiframework.com/news/368/cookies-1-2-0

[30] Translator 1.0.0 и связанные пакеты: https://www.yiiframework.com/news/364/translator-1-0-0-and-related-packages

[31] Rate limiter 2.0.0: https://www.yiiframework.com/news/387/ratelimiter-2-0-0

[32] Mutex и адаптеры 1.0.0: https://www.yiiframework.com/news/388/mutex-and-adapters-1-0-0

[33] yiisoft/factory: https://github.com/yiisoft/factory

[34] yiisoft/di: https://github.com/yiisoft/di

[35] запускать тесты всех пакетов в полночь: https://github.com/yiisoft/package-template/pull/45

[36] Yii Config: https://github.com/yiisoft/config

[37] инструментария разработки: https://github.com/yiisoft/yii-dev-tool

[38] yiisoft/demo: https://github.com/yiisoft/demo

[39] yiisoft/demo-api: https://github.com/yiisoft/demo-api

[40] yiisoft/app: https://github.com/yiisoft/app

[41] yiisoft/app-api: https://github.com/yiisoft/app-api

[42] config/bootstrap.php: https://github.com/yiisoft/demo/blob/master/config/bootstrap.php

[43] config/bootstrap-web.php: https://github.com/yiisoft/demo/blob/master/config/bootstrap-web.php

[44] config/bootstrap-console.php: https://github.com/yiisoft/demo/blob/master/config/bootstrap-console.php

[45] Сделали сервис-провайдеры: https://github.com/yiisoft/di#using-service-providers

[46] container-interop: https://github.com/container-interop/service-provider

[47] Добавлены : https://github.com/yiisoft/di/pull/241

[48] Это позволило немного упростить конфиги: https://github.com/yiisoft/data-response/pull/60

[49] Готовим 2.0.0: https://github.com/yiisoft/html/blob/master/CHANGELOG.md

[50] обзавёлся инструкциями в readme: https://github.com/yiisoft/middleware-dispatcher

[51] пакет интеграции с Sentry: https://github.com/yiisoft/yii-sentry

[52] Sentry: https://sentry.io/

[53] widget: https://github.com/yiisoft/widget

[54] Yii widgets: https://github.com/yiisoft/yii-widgets

[55] Все виджеты Yii стали иммутабельными: https://github.com/yiisoft/yii-widgets/pull/36

[56] выглядят приятней: https://github.com/yiisoft/error-handler/pull/45

[57] Мы решили поддерживать markdown и описать это в интерфейсах: https://github.com/yiisoft/error-handler/issues/44

[58] Добавлена поддержка окружений: https://github.com/yiisoft/config#environments

[59] версию под Angular: https://github.com/yiisoft/yii-debug-frontend

[60] yiisoft/yii-debug: https://github.com/yiisoft/yii-debug

[61] yiisoft/yii-debug-api: https://github.com/yiisoft/yii-debug-api

[62] yiisoft/yii-debug-viewer: https://github.com/yiisoft/yii-debug-viewer

[63] 020 - Package release criteria: https://github.com/yiisoft/docs/blob/master/020-package-release-criteria.md

[64] 021 - Changelog and upgrade: https://github.com/yiisoft/docs/blob/master/021-changelog-upgrade.md

[65] полностью обновлено руководство: https://github.com/yiisoft/docs/blob/master/guide/en/README.md

[66] Introduction to the MVC programming paradigm through Yii2: https://yiifeed.com/news/512/intoduction-to-the-mvc-programming-paradigm-through-yii2

[67] Real World Benchmark PHP Routing: http://kaloyan.info/writing/2021/05/31/benchmark-php-routing.html

[68] More Real World PHP Routing Benchmarks: http://kaloyan.info/writing/2021/06/07/more-php-routing-benchmarks.html

[69] Benchmark PHP Routing with Yii 2 results: https://github.com/bizley/benchmark-php-routing

[70] A demo of Temporal + Yii3: https://github.com/xepozz/yii-temporal-demo

[71] C4, Diagrams as Code & Architectural Joy: https://lukemerrett.com/c4-diagrams-as-code-architectural-joy/

[72] Tactician got Yii support: https://tactician.thephpleague.com/installation/#yii-framework-2

[73] NoColor — validate the architecture of your PHP project: https://www.reddit.com/r/PHP/comments/o9fpcx/nocolor_validate_the_architecture_of_your_php/

[74] Composer sunsetting the PHP Version Stats Blog Series: https://blog.packagist.com/sunsetting-the-php-version-stats-blog-series/

[75] Yii2 stats: https://packagist.org/packages/yiisoft/yii2/php-stats

[76] Don't test constructors: https://matthiasnoback.nl/2021/05/dont-test-constructors/

[77] PHP-FPM tuning: Using "pm static" for max performance: https://haydenjames.io/php-fpm-tuning-using-pm-static-max-performance/

[78] Microservice Architecture: https://microservices.io/

[79] Xdebug 3 videos: https://www.youtube.com/playlist?list=PLg9Kjjye-m1g_eXpdaifUqLqALLqZqKd4

[80] samdark reviewing Yii issues: https://www.youtube.com/watch?v=s2wyJc4h1U4

[81] CraftCMS: https://craftcms.com/

[82] Onetwist Software: https://www.onetwist.com/

[83] SkillShare: https://www.skillshare.com/

[84] Betteridge: https://www.betteridge.com/

[85] dmstr: https://www.dmstr.io/en

[86] HumHub: https://www.humhub.com/en

[87] JetBrains: https://www.jetbrains.com/

[88] Skin.Club: https://skin.club/

[89] EFKO Group: https://www.efko.ru/

[90] отдельные разработчики и другие компании: https://opencollective.com/yiisoft

[91] Evgeniy Zyubin: https://github.com/devanych

[92] Sergei Predvoditelev: https://github.com/vjik

[93] yiiliveext: https://github.com/yiiliveext

[94] Wilmer Arambula: https://github.com/terabytesoftw

[95] Rustam Mamadaminov: https://github.com/rustamwin

[96] Dmitry Derepko: https://github.com/xepozz

[97] Mehdi Achour: https://github.com/machour

[98] Valerii Gorbachev: https://github.com/darkdef

[99] Viktor Babanov: https://github.com/viktorprogger

[100] Anton Samoylenko: https://github.com/Fantom409

[101] Toir Tuychiev: https://github.com/toir427

[102] Alexander Nekrasov: https://github.com/thenotsoft

[103] Tarek K. Ajaj: https://github.com/Tarekajaj

[104] Leonid Chernenko: https://github.com/Nex-Otaku

[105] Maksym Storchak: https://github.com/strorch

[106] Aleksei Gagarin: https://github.com/roxblnfk

[107] Alexey Kopytko: https://github.com/sanmai

[108] Andrii Vasyliev: https://github.com/hiqsol

[109] Razon Yang: https://github.com/razonyang

[110] Somogyi Márton: https://github.com/kamarton

[111] mj4444: https://github.com/mj4444ru

[112] Dmitry Egorov: https://github.com/Desure85

[113] Mister 42: https://github.com/Mister-42

[114] ditibal: https://github.com/ditibal

[115] Igbanam Ogbuluijah: https://github.com/igbanam

[116] Julian Schmidt: https://github.com/Julian-B90

[117] kafkiansky: https://github.com/kafkiansky

[118] Alexey Chernousov: https://github.com/iamsaint

[119] Carsten Brandt: https://github.com/cebe

[120] Roman Tsurkanu: https://github.com/romkatsu

[121] Marko Kaznovac: https://github.com/kaznovac

[122] Andrey Skugarev: https://github.com/skugarev

[123] Tobias Munk: https://github.com/schmunk42

[124] Источник: https://habr.com/ru/post/573940/?utm_source=habrahabr&utm_medium=rss&utm_campaign=573940