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

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

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

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

Актуализировано описание в части работы с роутингом в пакете Yii Request Model (PR) и документации (PR).
⚡️ #yiisoftDemo

В демо веб-приложения теперь используется стабильная версия пакета Yii Mailer Symfony Mailer Extension (PR).
⚡️ #yiisoftUser

Исправлена ошибка в Yii User: попытка аутентификации в CookieLoginMiddleware теперь происходит не каждый запрос, а только в случае, когда пользователь не аутентифицирован (PR).
⚡️ #yiisoftUser

Навели красоту в пакете Yii User: добавили/улучшили doc-блоки, причесали все служебные файлы, немного отрефакторили тесты (PR).
⚡️ #yiisoftUser

В пакете Yii User доработали функционал гостевой идентичности (PR, PR):

- добавили интерфейс гостевой идентичности GuestIdentityInterface, который реализуется финальным классом GuestIdentity;

- добавили интерфейс фабрики гостевой идентичности GuestIdentityFactoryInterface и его реализацию GuestIdentityFactory.

Теперь можно в приложении сделать свою реализацию новых интерфейсов и, например, использовать несколько классов гостевой идентичности или добавить к ним идентификаторы.
⚡️ #yiisoftUser

Изменили интерфейс CookieLoginIdentityInterface в Yii User (PR):
- удалили метод getCookieLoginDuration();
- добавили метод shouldLoginByCookie(), возвращающий булево значение, которое определяет нужно ли добавлять куки для данного пользователя.
⚡️ #yiisoftDi

В пакете Yii Dependency Injection улучшили сообщения об ошибках в композитном контейнере (PR).

Пример нового сообщения:

No definition or class found or resolvable in composite container:
1. Container Yiisoft\Di\Container #$container1Id: No definition or class found or resolvable for "test" while building "test".
2. Container Yiisoft\Di\Container #$container2Id: No definition or class found or resolvable for "test" while building "test".
⚡️ #yiisoftDemo

Несколько улучшений демо веб-приложения.

• Сделали рефакторинг авторизации (PR, PR).

• Адаптировали приложение к последним изменениям в Yii Router (PR, PR).
⚡️ #yiisoftYiiQueueAmqp

В пакете Yii Queue AMQP Driver исправили ошибки в конфигурации CI (PR).
⚡️ #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).