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

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

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

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

Рефакторинг точек входа в шаблоне приложении Yii Application Template (PR).

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

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

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

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

Небольшой рефакторинг точки входа в консоль в демо веб-приложения (PR).
⚡️ #yiisoftYiiSwagger

Поправили тесты в пакете Yii Swagger, они не проходили из-за изменений в Yii View Extension и Yii Data Response (PR).
⚡️ #yiisoftConfig

В пакете Yii Config добавлен тест на подключение файлов конфигураций из вложенных папок (PR).

Например, для такого пути config/common/*/*.php будут подключены все PHP-файлы из первого уровня вложенности.

Поддержку рекурсивной вложенности (например, так config/common/**/*.php) намеренно не стали делать, так как сборка конфигов происходит в рантайме, а рекурсивный обход папок негативно скажется на производительности.
⚡️ #yiisoftYiiEvent

В пакете Yii Event улучшены сообщения об ошибках (PR): помимо информации о некорректном слушателе или имени события теперь выводится сам этот слушатель/событие, что позволяет быстрее понять где закралась ошибка.
⚡️ #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).

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