Привет, сообщество! Это в очередной раз Александр и новости про PHP фреймворк Yii. Выпусков не было довольно долго, но это не потому, что ничего не происходит, а как раз наоборот: происходит всё и сразу. Над Yii3 работать всё приятней так как пакеты стабилизируются, а фреймворк становится более полным. Мы поучаствовали в эксперименте FundOSS по усилению финансирования OpenSource. Всего нас поддержали 49 человек на $813. FundOSS добавили до $3295 (минус комиссия Stripe). Это довольно хорошая сумма, которая позволит нам какое-то время выделять больше времени на развитие фреймворка. Спасибо, FundOSS, OpenCollective и, конечно, тем, кто нас поддерживает. Хочется, чтобы подобные эксперименты проводились почаще. Мы запустили пред-релизную поддержку компаний через Telegram. Канал IRC переместился в libera. Был запущен экспериментальный канал #yii3chronicles в Telegram. Там мы рассказываем о том, что происходит прямо сейчас. В прошлый раз я упомянул что компания awesomic пригласила нас использовать сервис бесплатно в качестве благодарности за Yii 2. С тех пор мы кое-чего успели. На странице "official logos and design" главного сайта можно найти логотипы, favicon-ы, общие гайдлайны и стандарт для диаграмм. Также прямо на главную страницу добавлена ссылка "Looking for Yii 3 progress?". Надеюсь, это ещё немного разогреет интерес к Yii3 и выльется в прирост issue и pull request. Был выпущен Yii 1.1.24. Поддержка первой ветки фреймворка продлена до 31.12.2023. Готов большой набор обновлений: Yii 2.0.43. Auth client 2.2.11. Bootstrap 2.0.11. Debug 2.1.18. ElasticSearch 2.1.2. Gii 2.2.3. HTTP Client 2.0.14. MongoDB 2.1.12. Smarty 2.0.10. Шаблоны приложений обновлены до Bootstrap 4. Релизнуто расширение для Bootstrap 5. Образы Docker обновлены до XDebug 3. В пакете для генерации документации по API выявлены серьёзные проблемы с PHP 8. Мы работаем над этим. А пока используйте для генерации документации PHP 7. ​ Релизы пакетов: Yii event. Error handler. Assets. Rate limiter. Data response. View. Yii view. View Twig renderer. Mailer и адаптер для SwiftMailer. Email log target. Cookies 1.2.0. Translator 1.0.0 и связанные пакеты. Rate limiter 2.0.0. Mutex и адаптеры 1.0.0. Я решил пока не заносить в список патч-релизы и не создавать на сайте новости про них. Это отнимает время, а контент там получается не сильно интересный. Немного пакетов убили: yiisoft/serializer. yiisoft/container-proxy. yiisoft/yii-debug-frontend (смотрите далее в секции "Debugger"). Сейчас главный фокус команды — yiisoft/factory и yiisoft/di. Они блокируют 11 и 31 релиз других пакетов соответственно. Мы решили запускать тесты всех пакетов в полночь в дополнение к запуску по коммиту. Это позволит видеть, что какой-то пакет разломался из-за обновления зависимости. Ситуация не очень частая для стабильных пакетов, но лучше перестраховаться. Пока ночные тесты включены не для всех репозиториев. Yii Config теперь требует Composer 2. Первая версия Composer не видит свежие пакеты на packagist и не позволяет поставить Yii 3. В процессе разработки встречаются разные неудобства при использовании инструментария разработки, которые мы исправляем: Была добавлена команда 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 сейчас блокируют релизы остальных пакетов, так что мы занимается, прежде всего, ими. Делается много рефакторинга и доработок: Оба пакета стали более строгими. Добавили валидацию в режиме разработки, убрали много способов задавать defintion-ы. Сообщения об ошибках стали более информативными. Сильно улучшили покрытие кода тестами. Контейнер: Удалили контекстный контейнер и delegate lookup. Они дублировали функции композитного контейнера. Сделали сервис-провайдеры вместо предыдущих провайдеров (DeferredServiceProvider и ServiceProvider). Они навеяны container-interop, но не полностью повторяют его потому как в черновике стандарта были проблемы. Внутренний формат хранения definition-ов переделан для удобной отладки. Добавлены ReferencesArray и DynamicReferencesArray. Это позволило немного упростить конфиги. Фабрика: В Factory::create() остался только один аргумент, definition класса, который необходимо создать. Фабрика больше не реализует PSR ContainerInterface. Factory::get() и Factory::has() были удалены. Добавлено определение циклических ссылок. Упростили конфигурацию для простых случаев. Достаточно настроить брокер AMQP, а остальное заработает само. Стало удобней настраивать каналы. Адаптер AMQP теперь делает ack обработанным сообщениям. Готовим 2.0.0. Будут новые теги, оптимизация генерируемого HTML и улучшение API. Пакет практически готов к релизу. Мы ещё проверяем альтернативные идеи по его дизайну, но и текущий почти идеален. Пакет обзавёлся инструкциями в readme. Сильно повышена производительность. Middleware создаются только когда необходимо и кэшируются в памяти, что особо актуально для RoadRunner и Swoole. Синтаксис валидаторов изменён: Создан пакет интеграции с Sentry. Sentry - сервис агрегации логов. Позволяет эффективно мониторить логи с продакшна. Поддерживаются и веб, и консоль. Теперь используем friendly exception-ы. Обновлена документация как у widget, так и у Yii widgets. Все виджеты Yii стали иммутабельными. Улучшено покрытие тестами и общее качество. Сильно почистили виджеты Bulma. Friendly exception-ы теперь выглядят приятней. Мы решили поддерживать markdown и описать это в интерфейсах. Исключения в консоли теперь нормально пишутся в лог. Добавлена поддержка окружений. Улучшено отслеживание конфигов при добавлении и удалении пакетов. Хэши хранятся в файле dist.lock. Обновлена документация. После того, как мы убили версию под 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(). 020 - Package release criteria. 021 - Changelog and upgrade. Также полностью обновлено руководство и README большинства пакетов. Introduction to the MVC programming paradigm through Yii2. Real World Benchmark PHP Routing. More Real World PHP Routing Benchmarks. Benchmark PHP Routing with Yii 2 results. We use FastRoute in Yii3. A demo of Temporal + Yii3. C4, Diagrams as Code & Architectural Joy. Tactician got Yii support. NoColor — validate the architecture of your PHP project. Composer sunsetting the PHP Version Stats Blog Series and Yii2 stats. Don't test constructors. PHP-FPM tuning: Using "pm static" for max performance. Microservice Architecture. Xdebug 3 videos. samdark reviewing Yii issues. Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится! CraftCMS - Отличная OpenSource CMS на Yii2. Onetwist Software - Услуги качественной разработки приложений. SkillShare - Обучение новым навыкам. Betteridge - Ювелирные изделия. dmstr - Облачные решения на основе Docker. HumHub - OpenSource решения для общения команды. JetBrains - Отличные инструменты для разработки. Skin.Club - Рынок скинов для CS:GO. EFKO Group - фудтех, производство продуктов питания, и венчурные инвестиции. С недавнего времени ещё и ЭФКО Цифровые Решения, отдельная растущая сервисная IT-компания, которая планирует заниматься не только внутренними проектами ЭФКО. Кроме перечисленных нас поддерживают отдельные разработчики и другие компании. ​ Отдельное спасибо тем, кто помог Yii 3 кодом: Evgeniy Zyubin. Sergei Predvoditelev. yiiliveext. Wilmer Arambula. Rustam Mamadaminov. Dmitry Derepko. Mehdi Achour Valerii Gorbachev. Viktor Babanov. Anton Samoylenko. Toir Tuychiev. Alexander Nekrasov. Tarek K. Ajaj. Leonid Chernenko. Maksym Storchak. Aleksei Gagarin. Alexey Kopytko. Andrii Vasyliev. Razon Yang. Somogyi Márton. mj4444. Dmitry Egorov. Mister 42. ditibal. Igbanam Ogbuluijah. Julian Schmidt. kafkiansky. Alexey Chernousov. Carsten Brandt. Roman Tsurkanu. Marko Kaznovac. Andrey Skugarev. Tobias Munk. PHP, Yii