Хроники Yii3
623 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://yangx.top/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftDemo

По аналогии с шаблоном веб-приложения выполнен рефакторинг точек входа в демо веб-приложения (PR).

• Код запуска консольного приложения вынесен из yii в новый класс ConsoleApplicationRunner.

• Класс для запуска веб-приложения переименован из ApplicationRunner в WebApplicationRunner.

• Для запуска bootstrap-кода создан класс BootstrapRunner.

• Прочие мелкие улучшения.
⚡️ #yiisoftDi #yiisoftDefinitions

Выполнен рефакторинг работы с делегатами контейнера в Yii Dependency Injection (PR, PR).

• Делегат представляет собой функцию обратного вызова вида function (ContainerInterface $container): ContainerInterface, возвращающую контейнер, из которого будет выполнена попытка получения сервиса, если он не был найден в основном контейнере.

• Делегаты добавляются в контейнер через конструктор.

Также в рамках этих изменений в исключении Yiisoft\Definitions\Exception\NotFoundException добавлен второй параметр, в который передаётся стек разрешения зависимостей при создании сервиса. Это позволит гораздо быстрее понять, где конкретно возникла ошибка.
⚡️#yiisoftYiiConsole

В консоли Yii Console у команд добавлена поддержка статического свойства $defaultDescription, которое содержит описание команды (PR).

Если у команды заданы статические свойства $defaultName и $defaultDescription, то при выводе списка команд в консоли такие команды не будут инициализироваться.
⚡️ #yiisoftConfig

В пакете Yii Config при выводе сравнения файлов в консоли изменён порядок сравнения файлов: раньше сравнивался файл из вендора с файлом из приложения, теперь наоборот (PR).
⚡️ #yiisoftYiiQueue

Сделали рефакторинг и исправили ошибки в консольных командах пакета Yii Queue: теперь они работают и поддерживают "ленивую" загрузку (PR).

Спасибо Алексею Черноусову за PR и Александру Борисову за ревью 👍
🎁 #yiisoftAssets #yiisoftCsrf #yiisoftDataResponse #yiisoftMailerSwiftmailer #yiisoftTranslator #yiisoftView #Релиз #ПатчРелиз

В связи с переходом на использование дефинишенов из пакета Yii Definitions сделаны патч-релизы пакетов, использующих их в своих конфигурациях:

Yii Assets 1.0.1
Yii CSRF 1.0.3
Yii Data Response 1.0.1
Yii Mailer Swiftmailer 3.0.1
Yii Message Translator 1.0.1
Yii View 2.0.1
⚡️ #yiisoftApp

В шаблоне приложения Yii Application Template добавлен ежедневный запуск тестов через GitHub Workflow (PR).
⚡️ #yiisoftFactory

В Yii Factory изменена логика создания объектов и разрешения зависимостей (PR). Новая логика представлена на блок-схеме.
⚡️ #yiisoftData

В пакете Yii Data уровень psalm увеличен до 2 (PR).
⚡️#yiisoftYiiConsole

В документации к консоли Yii Console добавлена информация о минимальной конфигурации для Yii Config (PR).

Спасибо Евгению Ткаченко за PR 👍
#yiisoftClassifier

Создан новый пакет Yii Classifier, который будет предоставлять функционал для поиска классов и/или интерфейсов по каким-либо признакам:

• пространство имён,
• название,
• аннотации,
• атрибуты
• и т. д.

Это может быть полезно, например, в DI-контейнере для автоматического создания тегов.
⚡️ #yiisoftApp

Улучшен сценарий запуска приложения в Yii Application Template + мелкие правки (PR).

• Для определения режима отладки используется переменная окружения YII_DEBUG (по умолчанию true).

• При отключении режима отладки в DI-контейнере отключается немедленная валидация дефинишенов.

• Текущее окружение, которые определяется по значению переменной окружения YII_ENV (по умолчанию null) используется при формировании конфигурации (см. документацию к Yii Config).

• В качестве кода ответа в консольных командах используются константы из класс Yiisoft\Yii\Console\ExitCode.

• Добавлены тесты для консольных команд.
⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi

Выполнен рефакторинг в пакете Yii Definitions (PR).

• Для разрешения зависимостей при получении объекта из CallableDefinition вместо обращения к DependencyResolverInterface::invoke() используется внутренний функционал пакета. Это позволило исключить пакет yiisoft/injector из зависимостей в Yii Factory и Yii Dependency Injection.

• Интерфейс DependencyResolverInterface теперь НЕ наследуется от ContainerInterface, а используемый метод get() переименован в resolve().

• В интерфейсе DependencyResolverInterface удалён метод invoke(), так как теперь он нигде не используется.

Необходимые изменения внесены в пакеты Yii Factory (PR) и Yii Dependency Injection (PR).
⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi

В приложениях добавлена поддержка делегатов для контейнера, созданы соответствующие файлы конфигурации:

- шаблон веб-приложения (PR),
- шаблон API-приложения (commit),
- демо веб-приложения (PR),
- демо API-приложения (PR).
⚡️ #yiisoftArrays

В пакете Yii Arrays финализированы классы ArrayHelper и ArraySorter (PR).
⚡️ #yiisoftArrays

В хелпере ArrayHelper из пакета Yii Arrays в методах map(), index(), group(), htmlEncode() и htmlDecode() добавлена поддержка iterable-объектов (PR).

Спасибо Максиму Тимофееву за идею 👍
⚡️ #yiisoftYiiEvent

В пакете Yii Event в случаях, когда используется некорректный слушатель, выводится более подробное сообщение об ошибке (PR).

Примеры сообщений:

Could not instantiate "App\Events\MyEvent" or "handle" method is not defined in this class.

"handle" method is not defined in "App\Events\MyEvent" class.

Listener must be a callable. Got App\Events\MyEvent.
⚡️ #yiisoftPackageTemplate

Для проверки и автоматического исправления стиля кода во всех пакетах используется сервис StyleCI. На днях на сервисе раскатали обновление, после которого сервис стал выдавать ошибку при работе с нашей конфигурацией.

Исправили конфигурацию в пакете-шаблоне Yii Package Template (PR) и обновили её во всех пакетах Yii3.
⚡️ #yiisoftDemo #yiisoftDemoApi

В одном из последних обновлений демо-приложений в них случайно попали конфигурационные файлы, которые не нужны на данном этапе разработки. Убрали лишние конфигурации в демо веб-приложения (PR) и демо API-приложения (PR).
⚡️ #yiisoftYiiCycle

Конфигурация в пакете Yii Cycle адаптирована для работы с делегатами DI-контейнера (PR). Это позволило в приложениях получать репозитории Cycle прямо из основного контейнера.
⚡️ #yiisoftData

В пакете Yii Data исправлены phpdoc-аннотации (PR), которые в некоторых случаях приводили к некорректным ошибкам статического анализатора psalm при использовании пакета.