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

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

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

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

Метод MigrationService::findMigrationPath() из Yii DB Migration теперь возвращает путь с уже обработанными алиасами (PR).
⚡️ #yiisoftUser

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

Так как куку можно легко поправить в браузере, то в приложении нужно использовать один из двух вариантов:

1) кодировать куку (например, как это сделано в демо веб-приложения: мидлварь + её конфигурация);

2) дополнительно сохранять срок действия токена аутентификации на сервере и использовать его для проверки.
⚡️ #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).
⚡️ #yiisoftYiiRunnerRoadrunner

Исправили некорректный пример кода в readme пакета Yii RoadRunner Runner (PR).
⚡️ #yiisoftDefinitions #yiisoftDi

В контейнере зависимостей Yii Dependency Injection добавили возможность включить «строгий» режим (PR), в этом режиме контейнер будет работать только с явно определёнными дефинишенами.

Строгий режим включается в конфигурации контейнера:

$config = ContainerConfig::create()->withStrictMode(true);
$container = new Container($config);

—————

Контейнер работает на базе Yii Definitions, в котором также добавили строгий режим для хранилища DefinitionStorage (PR).
⚡️ #yiisoftYiiCycle

В ветке 2.0 пакете Yii Cycle ORM фабрика DbalFactory адаптирована к последним изменениям в Cycle ORM (PR).
⚡️ #yiisoftDefinitions

Несколько улучшений в Yii Definitions.

• Добавлена возможность указать несколько параметров для методов с переменным количеством аргументов (PR).

• Полностью покрыли код тестами и сделали небольшой рефакторинг, не затрагивающий публичный API (PR).
⚡️ #yiisoftDi

Несколько улучшений в Yii Dependency Injection:

• Запретили расширения для ContainerInterface (PR).

• В документации добавили блок «Указание метаданных для определений сервисов, не являющихся массивом» (PR).

• Увеличили покрытие кода тестами и сделали небольшой рефакторинг, не затрагивающий публичный API (PR).
⚡️ #yiisoftYiiConsole #yiisoftMailerSymfony

Добавлена поддержка 6й версии пакетов Symfony:

symfony/console в Yii Console (PR),
symfony/mailer в Yii Mailer Symfony Mailer Extension (PR).
⚡️ #yiisoftDi

Ещё немного изменений в Yii Dependency Injection (PR):

• финализировали класс StateResetter,

• в методе StateResetter::setResetters() добавили проверки на корректность ресеттеров,

• покрытие тестами увеличили до 100%.
⚡️ #yiisoftYiiBootstrap5

В пакете Yii Bootstrap 5 в виджете Dropdown добавили методы itemOptions() и linkOptions() (PR).
⚡️ #yiisoftDefinitions

Небольшое изменение синтаксиса определений сервисов в Yii Definitions: если в именованный variadic-параметр передать не массив, то будет брошено исключение (PR).
#yiisoftDefinitions #МажорныйРелиз #Релиз

🎁 Yii Definitions 1.0.0

Пакет предоставляет синтаксиc для описания способа создания и конфигурирования служб или объектов и включает в себя:

• Определения (Definitions), описывающие создаваемые службы или объекты (включает синтаксис, его валидацию и преобразование в объекты).

• Ссылки (Reference) и динамические ссылки (DynamicReference), указывающие на другие определения (включают дополнительную утилиту, позволяющую задать ссылки на несколько определений одновременно).

Сам по себе пакет не очень полезен для конечных пользователей фреймворка, но он является основой, на которой построены контейнер зависимостей Yii Dependency Injection и фабрика Yii Factory.

У пакета, как обычно, высокие технические показатели качества:
- 100% покрытие тестами;
- 92,9% MSI;
- 96,7% уровень покрытия типами;
- Psalm уровень 1.
⚡️ #yiisoftUser

В пакете Yii User в классе CurrentUser добавили метод clear(), который сбрасывает состояние объекта (PR).

Этот метод можно использовать в долгоживущих приложений, работающих в event-loop (RoadRunner, Swoole и др.).
⚡️ #yiisoftRouter

В конфигурации пакета Yii Router добавили сброс аргументов при сбросе состояния класса CurrentRoute (PR).
⚡️ #yiisoftWidget

Исправили ошибки статического анализа Psalm в Yii Widget (PR).
⚡️ #yiisoftUser #yiisoftDemo

В пакете Yii User для класса текущего пользователя CurrentUser сессия теперь передаётся не через конструктор, а через новый метод withSession() + сделаны иммутабельными и переименованы существующие методы (PR):

setAccessChecker()withAccessChecker(),
setAuthTimeout()withAuthTimeout(),
setAbsoluteAuthTimeout()withAbsoluteAuthTimeout().

В демо веб-приложения добавили конфигурацию CurrentUser с использованием новых методов (PR).
⚡️ #yiisoftDi

Продолжаем готовить Yii Dependency Injection к релизу.

• Ресеттеры состояния сервисов из атрибутов reset в дефинишенах теперь работают только в случаях, когда для контейнера не задано определение сервиса StateResetter или его расширение. Другими словами, если вы определили для контейнера StateResetter, то для сброса состояния будет использовать именно он (PR, PR).

• Улучшена валидация конфигурации (теги и др.) + уровень Psalm поднят до 1 (PR).
⚡️ #yiisoftYiiSwagger

Актуализировали пакет Yii Swagger (PR, PR):

• финализировали класс SwaggerUiAsset,
• убрали поддержку PHP 7.4 (теперь минимальная версия 8.0),
• переехали на кэш Yii Cache,
• подчистили код,
• причесали все служебные файлы,
• настроили процессы GitHub Actions.
⚡️ #yiisoftDi

В Yii Dependency Injection исправили получение ресеттеров состояния сервисов из делегатов: ранее, если задан кастомный ресеттер для контейнера, ресеттер из делегатов не использовался (PR).
#yiisoftDi #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Dependency Injection 1.0.0

PSR-совместимый контейнер внедрения зависимостей.

• Полное соответствие PSR-11.

• Поддержка внедрения зависимостей в конструктор, свойства и методы.

• Определение циклических зависимостей.

• Гибкий синтаксис для определение сервисов, в том числе в виде массива.

• Загрузка существующих классов без явного определения в контейнере (опционально).

• Поддержка алиасов для сервисов.

• Поддержка сервис-провайдеров.

• Наличие инструмента для сброса состояния в долгоживущих приложениях, таких как RoadRunner или Swoole.

• Поддержка контейнеров-делегатов, которые пробуют разрешить зависимость, если основной контейнер не смог.

• Наличие композитного контейнера.