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

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

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

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

В пакете Yii Cache DB Handler добавили yiisoft/psr-dummy-provider в dev-зависимости и добавили опцию source-directory в конфигурации для config-плагина (PR).
👍3
⚡️ #yiisoftRbac

В библиотеке Yii Role-Based Access Control добавили композитное правило, позволяющее группировать правила (PR). Примеры:

// Fresh and owned
$compositeRule = new CompositeRule(
'fresh_and_owned',
CompositeRule::AND,
[new FreshRule(), new OwnedRule()]
);

// Fresh or owned
$compositeRule = new CompositeRule(
'fresh_and_owned',
CompositeRule::OR,
[new FreshRule(), new OwnedRule()]
);
⚡️ Во всех пакетах Yii3 обновили конфигурацию логгера в Infection в соответствии с последними изменениями в Infection: теперь в Stryker Dashboard отправляется подробный отчёт о результатах мутационного тестирования.
👍3
#yiisoftFiles #ПатчРелиз #Релиз

🎁 Yii Files 1.0.2

Исправили тип возвращаемый функцией обратного вызова передаваемой в set_error_handler() в методе FileHelper::openFile() (PR).
⚡️ #yiisoftRbac

Улучшили/добавили описания в doc-блоках в библиотеке Yii Role-Based Access Control (PR).
#yiisoftMutex #ПатчРелиз #Релиз

🎁 Yii Mutex 1.1.1

Добавлена проверка на корректность значения, передаваемого в метод RetryAcquireTrait::withRetryDelay(). Если задержка менее 1 миллисекунды, то будет выброшено исключение InvalidArgumentException (PR).
👍1
⚡️ #yiisoftRbac

В пакете Yii Role-Based Access Control доработали документацию (PR), улучшили описания в doc-блоках и подняли уровень psalm до 1 (PR).

Похоже, скоро будет релиз пакета.
⚡️ #yiisoftYiiDevTool

В Yii Development Tool добавили команду git/clone (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp

В пакете Yii Role-Based Access Control финализировали классы Assignment, DenyAll, ClassNameRuleFactory и публичные методы в абстрактном классе Item (PR), а также немного улучшили аннотации для psalm (PR).

В Yii RBAC PHP File Storage подняли уровень psalm до 1, доработали описание в readme и "подчистили" служебные файлы (PR)
⚡️ #yiisoftAccess

В пакете Yii Access добавлены две простых реализации интерфейса AccessCheckerInterface (PR):
- DenyAll — запретить всем;
- AllowAll — разрешить всем.
#yiisoftYiiSwagger #МинорныйРелиз #Релиз

🎁 Yii Swagger 1.1.0

Добавлена возможность конфигурирования Yii\Swagger\Middleware\SwaggerJson через config/params.php (PR).

Пример конфигурации:

'yiisoft/yii-swagger' => [
// Директории, где будут использоваться аннотации
'annotation-paths' => [
'@src/Controller'
],
// Включает кэширование и устанавливает TTL, "null" означает "вечный" кэш
'cacheTTL' => 60
]

—————

⚡️ #yiisoftDemo #yiisoftDemoApi #yiisoftAppApi

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

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

🎁 Yii Access 1.1.0

Добавлены две простых реализации интерфейса AccessCheckerInterface:
- DenyAll — запретить всем;
- AllowAll — разрешить всем.
⚡️ #yiisoftRbac #yiisoftRbacPhp

Продолжается подготовка RBAC к релизу.

• В абстрактном классе \Yiisoft\Rbac\Rule имя правила в конструкторе сделали опциональным: если его не передали, то в качестве имени правила будет использоваться имя класса (PR).

• Для правил добавили новый интерфейс RuleInterface, теперь правила реализуют его, а не ItemInterface (PR) и адаптировали к этому изменению Yii RBAC PHP File Storage (PR).

• Из Yii RBAC удалили класс DenyAll (PR), а точнее перенесли его ранее в Yii Access.

• Улучшили аннотации psalm в Yii RBAC (PR) и Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftDb

В пакете Yii DB добавили возможность включить вечное кэширование схемы и запросов с помощью установки длительности кэша в null в методах SchemaCache::setDuration() и QueryCache::setDuration() соответственно (PR).
⚡️ #yiisoftRbac

Удалили интерфейс ItemInterface в пакете Yii Role-Based Access Control, теперь абстрактный класс Item, от которого наследуются роли и разрешения, сам по себе и не реализует никакие интерфейсы (PR).
⚡️ #yiisoftRequestModel

Несколько изменений в пакете Yii Request Model (PR):

- удалили интерфейс ValidatableModelInterface, использовав вместо него интерфейс Yiisoft\Validator\RulesProviderInterface;

- перенесли конфигурацию пакета из группы common в группу web.
👍2
⚡️ #yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

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

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

В пакете Yii HTTP Runner доработали логику определения порта в ServerRequestFactory (PR).

В ситуации, когда не удаётся получить порт из серверной переменной SERVER_PORT, то порт будет определён на основании текущей схемы: 443 для HTTPS и 80 в остальных случаях.
👍2
⚡️ #yiisoftYiiConsole

В документации пакета Yii Console добавили инструкцию по созданию точки входа в консольное приложение (PR).
⚡️ #yiisoftYiiRunnerConsole

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

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

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

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

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

Адаптировали демо API-приложения к внесённым ранее изменениям в конфигурации пакета Yii Request Model (PR).