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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
#yiisoftYiiRunner #yiisoftYiiRunnerConsole #yiisoftYiiRunnerWeb #yiisoftYiiRunnerRoadrunner

Создан новый пакет Yii Runner, в который вынесен общий код, необходимый для запуска любого приложения:

- класс BootstrapRunner, для запуска bootstrap-кода;

- фабрика ConfigFactory для создания экземпляра класса Yiisoft\Config\Config;

- класс ThrowableHandler, реализующий RequestHandlerInterface, это обёртка исключения для его выброса в мидлвари обработчика ошибок;

- интерфейс RunnerInterface для скрытия деталей запуска приложения.

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

- Yii Console Runner,
- Yii Web Runner,
- Yii RoadRunner Runner.
⚡️ #yiisoftConfig #yiisoftYiiRunnerRoadrunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunner

В Yii Config добавлена опция build-merge-plan в composer-плагине, позволяющая отключить автоматическое создание мёрж-плана (PR). Опция работает только для корневого пакета.

Пример:

"extra": {
"config-plugin-options": {
"build-merge-plan": false
}
},


Эта опция добавлена в раннерах:

Yii RoadRunner Runner (PR),
Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii Runner (PR).
⚡️ #yiisoftYiiRunnerHttp #yiisoftYiiRunnerRoadrunner #yiisoftYiiRunnerConsole

В раннерах добавлены/улучшены описания в doc-блоках:

Yii HTTP Runner (PR),
Yii RoadRunner Runner (PR),
Yii Console Runner (PR).
⚡️ #yiisoftDi

Изменили способ конфигурирования контейнера в Yii Dependency Injection: теперь вместо передачи нескольких параметров (дефинишены, делегаты и др.) в конструктор передаётся реализация интерфейса ContainerConfigInterface, позволяющая получить конфигурацию контейнера (PR).

Пример:

$config = ContainerConfig::create()
->withDefinitions($definitions)
->withProviders($providers)
->withTags($tags)
->withValidate(false)
->withDelegates($delegates);
$container = new Container($config);


⚡️ #yiisoftDocs #yiisoftYiiJquery #yiisoftInjector #yiisoftYiiAuthClient #yiisoftLogTargetDb #yiisoftYiiDebugViewer #yiisoftTranslatorMessageDb #yiisoftYiiDbMigration #yiisoftYiiDebug #yiisoftYiiBootstrap5 #yiisoftTranslatorExtractor #yiisoftYiiDataview #yiisoftYiiSwagger #yiisoftYiiRunnerConsole #yiisoftAppApi #yiisoftYiiRunnerRoadrunner #yiisoftYiiGii #yiisoftYiiRunnerHttp #yiisoftApp #yiisoftDemo

Соответствующие изменения внесены в документацию (PR), приложения и пакеты:

Yii jQuery (PR),
Yii Injector (PR),
Yii External Authentication (PR),
Yii Logging DB Target (PR),
Yii Debug Viewer (PR),
Yii Translator DB Message Storage (PR),
Yii DB Migration (PR),
Yii Debug (PR),
Yii Bootstrap 5 (PR),
Yii Message Extractor (PR),
Yii Data Widgets (PR),
Yii Swagger (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR),
Yii HTTP Runner (PR),
Gii (PR),
Шаблон API-приложения (PR),
Шаблон веб-приложения (PR),
Демо веб-приложения (PR).
⚡️ #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

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

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
⚡️ #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

Явно прописали зависимость от yiisoft/config в пакетах:

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
⚡️ #yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner #yiisoftApp #yiisoftDemo #yiisoftAppApi

ConfigFactory из пакета Yii Runner теперь принимает в качестве первого аргумента объект Yiisoft\Config\ConfigPaths вместо абсолютного пути к корню проекта, что позволит при необходимости дополнительно указать пути к папке с конфигурацией приложения и к папке vendor (PR).

Соответствующие изменения внесены в пакеты и приложения:

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR),
Шаблон веб-приложения (PR),
Демо веб-приложения (PR),
Шаблон API-приложения (PR).
#yiisoftConfig #МинорныйРелиз #Релиз

🎁 Yii Config 1.1.0

Добавили интерфейс ConfigInterface, позволяющий сделать свою реализацию загрузчика конфигураций:

interface ConfigInterface
{
public function get(string $group): array;
public function has(string $group): bool;
}


—————

⚡️ #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

Соответствующие изменения внесены в раннеры:

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
👍1🔥1
⚡️ #yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

Общую функциональность классов для запуска приложений вынесли в отдельный абстрактный класс \Yiisoft\Yii\Runner\ApplicationRunner:

Yii Runner (PR),
Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
⚡️ #yiisoftYiiRunnerConsole

В пакете Yii Console Runner убрали всю инфраструктуру для мутационного и юнит-тестирования (зависимости, GitHub Actions, конфигурации), оставив только статический анализ.

Сделано это было в связи с тем, что в пакете остался только один класс, который с помощью метода run() запускает консольное приложение. Метод run() содержит конструкцию:

try {
...
} catch (Throwable $throwable) {
...
} finally {
...
exit();
}

И команда exit() не позволяет протестировать этот метод с помощью юнит-тестов.

В дальнейшем планируем добавить приёмочные тесты с помощью Codeception.