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

Это в очередной раз Александр и новости про 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/serializer.

  • yiisoft/container-proxy.

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

Сейчас главный фокус команды — 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.phpconfig/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 ContainerInterfaceFactory::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

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

Виджеты

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

Конфиги

Дебаггер

После того, как мы убили версию под 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 кодом:

Комментарии (11)


  1. balberbro
    20.08.2021 19:29
    -1

    Зачем мистер Андерсон?


    1. SamDark Автор
      20.08.2021 20:35

      Кому?


    1. NiceDay
      21.08.2021 00:23
      +3

      потому что не всем и не всегда нужна симфони, но при этом некоторые не готовы мириться с приколами ларавеля, например?


  1. godzie
    21.08.2021 01:19
    +1

    Двоякое отношение к Yii. Yii2 в свое время помог "войти в профессию" и форум фреймворка был классный, но вот Yii3... Со стороны выглядит несколько противоречиво - топка за различные PSR'ы (роутинг, di, реквесты и тд) и при этом собственная реализация. Есть ли обоснование - зачем пилить свои имплементации шаблонных вещей когда вокруг куча готовых, протестированных, оптимизированных? Не является ли это бутылочным горлышком в процессе реализации фреймворка?


    1. SamDark Автор
      21.08.2021 12:33
      +3

      Хороший вопрос. https://rmcreative.ru/blog/post/yii-3-i-psr


  1. yurka
    21.08.2021 03:03
    +1

    Спасибо! За tw bootstrap 5 особенно - как раз пришелся к стати.


  1. Kutuzov_ska
    21.08.2021 12:42
    +1

    Будет ли русская документация (Guide и Api) в Yii3?


    1. SamDark Автор
      21.08.2021 12:45

      Если сообщество или команда переведёт и будет поддерживать — будет. Так-то я за, но самостоятельно перевод и его поддержку не втащу. Я пишу исходную документацию на английском. Некоторые члены команды, на русском. В этом случае она доступна сразу: https://github.com/yiisoft/yii-cycle/tree/master/docs


      1. TCPpoPochte
        23.08.2021 09:31

        В своё время Yii и Yii2 завоевали рынок в СНГ благодаря хорошей документации и гайдам на русском.
        Куда не плюнь, все знают Yii, все с ним работали. Для бизнеса это большой плюс, не надо переобучивать новых сотрудников.


        1. SamDark Автор
          23.08.2021 09:50

          Это я прекрасно знаю. Гайды в Yii 3 тоже будут неплохие, с переводом... ну, тут как сил хватит.


  1. pink2floyd
    23.08.2021 16:02

    Спасибо за работу