Конференция PHP Russia. Оффлайн 28 июня 2021, Москва.
Новости Yii 2021, выпуск 1

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

Это первый выпуск новостей в 2021. Начало года вышло продуктивным. Мы начали активно релизить пакеты Yii 3, есть значительный прогресс с пока не релизнутыми пакетами. Улучшили инструментарий разработки, много всего исправили, убили лишние пакеты. И всё это параллельно с поддержкой Yii 2 и решением проблем с финансированием.

Команда и фонд

Несмотря на то, что 2020 был через край долбанутым, для Yii всё вышло неплохо. Удалось договориться о продлении поддержки Yii 1.1 и других вещах в обмен на единовременное или постоянное пополнение фонда.

Эти соглашения и, конечно же, наши любимые спонсоры, позволили команде меньше работать над коммерческими проектами и больше над фреймворком. Фонд удалось использовать полностью.

Я был чрезвычайно воодушевлён возросшей скоростью разработки, окунулся в неё с головой и немного подзабыл о финансовой части. В январе меня ждал неприятный сюрприз. Оказывается, что забыл я про очень важный факт. А именно, что немаленькая часть средств фонда поступила не рекуррентными платежами. Соответственно, бюджета на всё не хватило. Чтобы не случилось полной катастрофы, я перестал забирать деньги фонда с OpenCollective и начал активно искать партнёров среди компаний, которые используют Yii и PHP. Результаты пока спорные, но, надеюсь, всё наладится.

Если хотите пообщаться на тему партнёрства, пишите в sam@rmcreative.ru.

Yii 2

Вышел Yii 2.0.41. Сильно помогли с релизом Paweł Brzozowski, недавно присоединившийся к команде Yii 2, и Robert Korulczyk с его тщательными ревью всего вливаемого в master кода. Много часов было потрачено на безопасность фреймворка. Удалось перебрать текущие сообщения о предполагаемых уязвимостях и улучшить безопасность.

Yii 3

Прежде всего, релизы:

В каждом пакете есть документация, отличное покрытие тестами, код вычищен и, конечно же, публичное API достаточно стабилен.

Ну а теперь время рассмотреть интересные изменения с предыдущего выпуска новостей. Для удобства изменения сгруппируем по пакетам.

Arrays

Data

Auth

Config plugin

После большого количества попыток улучшить Composer config plugin стало очевидно что он стал слишком сложным: AST, мёрж конфигов и всё что там творилось под капотом. Мы приняли решение сделать его менее зависимым от пакетов yiisoft и сделать новый, более простой и производительный, пакет.

Все шаблоны приложений уже были переведены на новые конфиги. Скорее всего нужно будет исправлять баги и повышать удобство использования пакета.

Error handler

Обработка ошибок в общем

Strings

Var dumper

Html

Пакет был значительно переработан. Главных изменений два:

  1. Вывод по умолчанию экранируется.
  2. Теги реализованы как отдельные объекты, создаваемые через статические методы-фабрики из Html. Для пользователя это значит, что конфигурация теперь производится через вызов методов. То есть теперь IDE это дополняют и проверяют.

Валидатор

Много рефакторинга. Самое интересное:

Формы

Перевод сообщений

Почти готов к релизу. Можете почитать его readme.

Mailer

Mailer и адаптер для SwiftMailer были вычищены и отрефакторены. Добавлена документация. Релизнем как только будут готовы зависимости.

DB и ActiveRecord

В обоих пакетах были исправления, оба ещё больше покрыли тестами. Wilmer, член команды, который занимался этими пакетами, уже проверил из в бою на Telegram боте с 120 тысячами запросов в сутки.

Оба пакета изначально были портированы из Yii 2 почти как есть. Была убрана магия, добавлены типы, покрытие тестами доведено почти до 100%. Но, несмотря на то что пакеты стали даже лучше, чем Yii 2, дизайн сохранился примерно в том же виде. Нам предстоит трудный выбор, релизить ли первую версию как есть или же сначала затеять гигантский рефакторинг.

Скорее всего выберем первое.

yii-web

User

Значительно переделали пакет:

Всё ещё не до конца довольны. Скорее всего будем переделывать ещё.

Bootstrap и Bulma

Консоль

Появилась возможность добавлять команды со своим именем.

Debugger

Есть прогресс как в API, так и на фронтенде.

Docker

Добавлена поддержка PHP 8.

Инструментарий разработки фреймворка

Улучшили инструментарий чтобы можно было удобно работать даже не поставив все пакеты. Улучшили точность фиксера зависимостей. Добавили новую команды release/what. Она подсказываем какой пакет релизить следующим. Приоритет отдаётся пакетам без нестабильных зависимостей и, при этом, блокирующих как можно больше релизов других пакетов.

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

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

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

❤️ Спасибо!

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

Я понял, что ранее не писал о компаниях, которые поддерживают разработку Yii. Вот самые большие спонсоры с коротким описанием:

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

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