- PVSM.RU - https://www.pvsm.ru -
Привет, сообщество!
Это в очередной раз Александр и новости про PHP фреймворк Yii. Выпусков не было довольно долго, но это не потому, что ничего не происходит, а как раз наоборот: происходит всё и сразу. Над Yii3 работать всё приятней так как пакеты стабилизируются, а фреймворк становится более полным.
Мы поучаствовали в эксперименте FundOSS по усилению финансирования OpenSource [1]. Всего нас поддержали 49 человек на $813. FundOSS добавили до $3295 (минус комиссия Stripe). Это довольно хорошая сумма, которая позволит нам какое-то время выделять больше времени на развитие фреймворка. Спасибо, FundOSS, OpenCollective и, конечно, тем, кто нас поддерживает. Хочется, чтобы подобные эксперименты проводились почаще.
Мы запустили пред-релизную поддержку компаний [2] через Telegram.
Был запущен экспериментальный канал #yii3chronicles [4] в Telegram. Там мы рассказываем о том, что происходит прямо сейчас.
В прошлый раз я упомянул что компания awesomic [5] пригласила нас использовать сервис бесплатно в качестве благодарности за Yii 2. С тех пор мы кое-чего успели. На странице "official logos and design [6]" главного сайта можно найти логотипы, favicon-ы, общие гайдлайны и стандарт для диаграмм.
Также прямо на главную страницу добавлена ссылка "Looking for Yii 3 progress?". Надеюсь, это ещё немного разогреет интерес к Yii3 и выльется в прирост issue и pull request.
Был выпущен Yii 1.1.24. Поддержка первой ветки фреймворка продлена до 31.12.2023 [7].
Готов большой набор обновлений:
Yii 2.0.43 [8].
Auth client 2.2.11 [9].
Bootstrap 2.0.11 [10].
Debug 2.1.18 [11].
ElasticSearch 2.1.2 [12].
Gii 2.2.3 [13].
HTTP Client 2.0.14 [14].
MongoDB 2.1.12 [15].
Smarty 2.0.10 [16].
Шаблоны приложений обновлены до Bootstrap 4.
Образы Docker обновлены до XDebug 3.
В пакете для генерации документации по API [18] выявлены серьёзные проблемы с PHP 8. Мы работаем над этим. А пока используйте для генерации документации PHP 7.
Релизы пакетов:
Yii event [19].
Error handler [20].
Assets [21].
Rate limiter [22].
Data response [23].
View [24].
Yii view [25].
View Twig renderer [26].
Email log target [28].
Cookies 1.2.0 [29].
Rate limiter 2.0.0 [31].
Mutex и адаптеры 1.0.0 [32].
Я решил пока не заносить в список патч-релизы и не создавать на сайте новости про них. Это отнимает время, а контент там получается не сильно интересный.
Немного пакетов убили:
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.
В процессе разработки встречаются разные неудобства при использовании инструментария разработки [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 сейчас блокируют релизы остальных пакетов, так что мы занимается, прежде всего, ими. Делается много рефакторинга и доработок:
Оба пакета стали более строгими. Добавили валидацию в режиме разработки, убрали много способов задавать defintion-ы.
Сообщения об ошибках стали более информативными.
Сильно улучшили покрытие кода тестами.
Контейнер:
Удалили контекстный контейнер и delegate lookup. Они дублировали функции композитного контейнера.
Сделали сервис-провайдеры [45] вместо предыдущих провайдеров (DeferredServiceProvider
и ServiceProvider
). Они навеяны container-interop [46], но не полностью повторяют его потому как в черновике стандарта были проблемы.
Внутренний формат хранения definition-ов переделан для удобной отладки.
Добавлены [47]ReferencesArray
и DynamicReferencesArray
. Это позволило немного упростить конфиги [48].
Фабрика:
В Factory::create()
остался только один аргумент, definition класса, который необходимо создать.
Фабрика больше не реализует PSR ContainerInterface
. Factory::get()
и Factory::has()
были удалены.
Добавлено определение циклических ссылок.
Упростили конфигурацию для простых случаев. Достаточно настроить брокер AMQP, а остальное заработает само.
Стало удобней настраивать каналы.
Адаптер AMQP теперь делает ack обработанным сообщениям.
Готовим 2.0.0 [49]. Будут новые теги, оптимизация генерируемого HTML и улучшение API.
Пакет практически готов к релизу. Мы ещё проверяем альтернативные идеи по его дизайну, но и текущий почти идеален.
Пакет обзавёлся инструкциями в readme [50].
Сильно повышена производительность. Middleware создаются только когда необходимо и кэшируются в памяти, что особо актуально для RoadRunner и Swoole.
Синтаксис валидаторов изменён:
// до
(new Number())->integer()->min(44);
// после
Number::rule()->integer()->min(44);
Создан пакет интеграции с Sentry [51]. Sentry [52] - сервис агрегации логов. Позволяет эффективно мониторить логи с продакшна. Поддерживаются и веб, и консоль.
Теперь используем friendly exception-ы.
Обновлена документация как у widget [53], так и у Yii widgets [54].
Улучшено покрытие тестами и общее качество.
Сильно почистили виджеты Bulma.
Friendly exception-ы теперь выглядят приятней [56].
Мы решили поддерживать markdown и описать это в интерфейсах [57].
Улучшено отслеживание конфигов при добавлении и удалении пакетов. Хэши хранятся в файле 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 большинства пакетов.
Introduction to the MVC programming paradigm through Yii2 [66].
Benchmark PHP Routing with Yii 2 results [69]. We use FastRoute in Yii3.
NoColor — validate the architecture of your PHP project [73].
Composer sunsetting the PHP Version Stats Blog Series [74] and Yii2 stats [75].
Don't test constructors [76].
Xdebug 3 videos [79].
Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка 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 кодом:
Evgeniy Zyubin [91].
Sergei Predvoditelev [92].
yiiliveext [93].
Wilmer Arambula [94].
Rustam Mamadaminov [95].
Dmitry Derepko [96].
Mehdi Achour [97]
Valerii Gorbachev [98].
Viktor Babanov [99].
Anton Samoylenko [100].
Toir Tuychiev [101].
Alexander Nekrasov [102].
Tarek K. Ajaj [103].
Leonid Chernenko [104].
Maksym Storchak [105].
Aleksei Gagarin [106].
Alexey Kopytko [107].
Andrii Vasyliev [108].
Razon Yang [109].
Somogyi Márton [110].
mj4444 [111].
Dmitry Egorov [112].
Mister 42 [113].
ditibal [114].
Igbanam Ogbuluijah [115].
Julian Schmidt [116].
kafkiansky [117].
Alexey Chernousov [118].
Carsten Brandt [119].
Roman Tsurkanu [120].
Marko Kaznovac [121].
Andrey Skugarev [122].
Tobias Munk [123].
Автор: Александр Макаров
Источник [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
Нажмите здесь для печати.