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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
#yiisoftYiiSwagger #МинорныйРелиз #Релиз

🎁 Yii Swagger 1.2.0

• В сервисе \Yiisoft\Swagger\Service\SwaggerService добавлен метод withOptions(), позволяющий задать конфигурацию объекта \OpenApi\Annotations\OpenAPI создаваемого этим сервисом. Конфигурация объекта OpenAPI также доступна через параметры пакета в config/params.php:

'yiisoft/yii-swagger' => [
// Default values are specified.
'open-api-options' => [
'aliases' => OpenApi\Generator::DEFAULT_ALIASES,
'namespaces' => OpenApi\Generator::DEFAULT_NAMESPACES,
'analyser' => null,
'analysis' => null,
'processors' => null,
'logger' => null,
'validate' => true,
'version' => OpenApi\Annotations\OpenApi::DEFAULT_VERSION,
],
],
//...
⚡️ Во всех пакетах добавили разрешенные плагины (allow-plugins) в секцию конфигурации composer.json:

• во всех пакетах разрешены плагины infection/extension-installer и composer/package-versions-deprecated;

• дополнительно в раннерах разрешён плагин yiisoft/config;

• дополнительно в демо- и шаблонах приложений разрешены плагины codeception/c3 и yiisoft/config.

До июля 2022 года composer по умолчанию разрешает установку любых composer-плагинов, затем будут разрешены только плагины указанные в composer.json в секции configallow-plugins (см. документацию composer).
👍3
⚡️ #yiisoftValidator #yiisoftForm

Переименовали методы в классе Result из пакета Yii Validator, в итоге публичный интерфейс класса выглядит следующим образом:

isValid(): bool

isAttributeValid(string $attribute): bool

getErrors(): Error[]

getErrorMessages(): string[]

getErrorMessagesIndexedByPath(string $separator = '.'): array<string, non-empty-list<string>>

getErrorMessagesIndexedByAttribute(): array<string, non-empty-list<string>>

getAttributeErrors(string $attribute): Error[]

getAttributeErrorMessages(string $attribute): string[]

getCommonErrorMessages(): string[]

Yii Form адаптировали к этим изменениям (PR).
⚡️ #yiisoftValidator

В пакете Yii Validator добавили несколько новых методов в класс Result (PR).

getErrorsIndexedByAttribute() — возвращает список сообщений об ошибках, разбитых по атрибутам. Например:
[
'name' => ['error1', 'error2'],
'age' => ['error'],
]


getCommonErrors() — возвращает список сообщений об ошибках, не относящихся к атрибутам.
⚡️ #yiisoftDocs

В разделе «Стиль кода» документации добавили соглашение об именовании коллекций: классы, интерфейсы, трейты и переменные, являющиеся коллекцией, должны оканчиваться на Collection (PR).
👍3
⚡️ #yiisoftForm

Адаптировали пакет Yii Form к удалению класса ResultSet в Yii Validator (PR).
⚡️ #yiisoftSecurity

В Yii Security исправили ошибки статического анализа, которые проявились с очередным обновлением psalm (PR).
👍1👏1
⚡️ #yiisoftYiiConsole

В пакете Yii Console в методе Yiisoft\Yii\Console\CommandLoader::get() добавили тип возвращаемого результата (PR):

public function get(string $name): Command
#yiisoftYiiConsole #МинорныйРелиз #Релиз

🎁 Yii Console 1.0.1

• В методе Yiisoft\Yii\Console\CommandLoader::get() добавлен тип возвращаемого результата (Symfony\Component\Console\Command\Command).

• Добавлена поддержка 6й версии пакета symfony/console.
⚡️ #yiisoftRequestModel #yiisoftForm

К последним изменениям в Yii Validator адаптировали Yii Request Model (PR) и Yii Form (PR).
⚡️ #yiisoftDemoApi

В инструкцию по установке демо API-приложения добавили пункт об изменении владельца директории приложения (PR).
👍1
⚡️ #yiisoftForm

В пакете Yii Form в модели формы теперь валидируются исходные данные до приведения типов (PR).
👍1
⚡️ #yiisoftYiiSwagger

Исправили ссылку на документацию Swagger-PHP в readme пакета Yii Swagger (PR).
⚡️ #yiisoftDemo

В демо веб-приложения разрешили composer-плагины composer/installers и oomphinc/composer-installers-extender, которые требуются для Yii Bootstrap 5 (PR).
👍1
⚡️ #yiisoftMutexFile

Исправили ошибку в примере кода в readme пакета Yii Mutex File Driver (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp #yiisoftDemo
#yiisoftRbacRulesContainer

Переработали хранение и создание правил в пакете Yii Role-Based Access Control (PR). Теперь правила НЕ сохраняются в хранилище, а создаются с помощью абстрактной фабрики RuleFactoryInterface. Это позволило существенно упростить код:

- из хранилища ItemsStorageInterface удалены все методы, касающиеся правил;

- у правил теперь нет имён и соответственно удалён метод getName();

- удалён абстрактный класс Rule, так как он был нужен только для удобства работы с именем правила.

Вместо фабрики ClassNameRuleFactory в новом пакете Yii RBAC Rules Container создан контейнер правил RulesContainer (реализует интерфейс RuleFactoryInterface), позволяющий задавать конфигурацию правил с помощью синтаксиса Yii Definitions и использовать любой PSR-11 контейнер для разрешения зависимостей.

К этим изменениям адаптированы хранилище Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
👍1
⚡️ #yiisoftYiiDevTool #yiisoftPackageTemplate

Несколько изменений в пакетах для разработки:

• В шаблоне пакетов Yii Package Template удалили название репозитория по умолчанию в composer.json (PR).

Yii Development Tool адаптировали к PHP 8.1 (PR) и добавили пакет Yii RBAC Rules Container (PR).
⚡️ #yiisoftForm

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

• В модель формы добавлен метод setFormErrors(FormErrorsInterface $formErrors): void (PR).

• В поле Hidden в качестве значения дополнительно к строкам разрешено также передавать число или null (PR).
⚡️ #yiisoftMiddlewareDispatcher

В пакете Yii Middleware Dispatcher в отладочную информацию обёртки на мидлварями в виде функций обратного вызова добавили саму эту функцию (PR).
⚡️ #yiisoftRbac

В RBAC-менеджере библиотеки Yii Role-Based Access Control в качестве ID пользователя разрешено передавать строку, целое число или объект с методом __toString() (PR).
#yiisoftMiddlewareDispatcher #ПатчРелиз #Релиз

🎁 Yii Middleware Dispatcher 2.0.1

• Добавлена отладочная информация для обёртки на мидлварями в виде функций обратного вызова.
👍1