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

Обсуждение:
https://t.iss.one/yii3ru

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
🖼 В качестве анонса...

Завершена техническая подготовка 5 новых пакетов к релизу:

Yii Hydrator
Yii Validating Hydrator
Yii Input HTTP
Yii Form
Yii Form Model

Покрытие тестами — 100%. MSI — 100%. Psalm 1 уровня.

Осталось провести финальное ревью, добавить документацию, и пакеты уходят в релиз.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👍83👾1
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 3.1

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

• Реализовано автоматическое определение темы (светлая или тёмная).

• Добавлено композитное исключение CompositeException, используемое для вывода нескольких исключений одновременно.

• При возникновении ошибки во время обработки запроса в ErrorCatcher теперь отправляется событие ApplicationError.
👍14👾2
⚡️ #yiisoftYiiQueue #yiisoftYiiQueueAmqp #yiisoftQueue #yiisoftQueueAmqp

У пакетов Yii Queue и Yii Queue AMQP Driver убран префикс yii-.

yiisoft/yii-queueyiisoft/queue
yiisoft/yii-queue-amqpyiisoft/queue-amqp
🔥6👾5👍1🎄1
#yiisoftTranslatorExtractor #МинорныйРелиз #Релиз

🎁 Yii Message Extractor 2.1

• Добавлена возможность указать метод используемый для перевода сообщений.

• Добавлена поддержка symfony/console версии ^7.0.
👍111👾1
#yiisoftHydrator #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Hydrator 1.0

Гидратор позволяет создавать и/или наполнять объекты из сырого набора данных.

• Поддержка свойств в любой области видимости.

• Поддержка аргументов конструктора при создании объектов.

• Автоматической разрешение зависимостей при создании объектов, используя PSR-11 совместимый контейнер.

• Поддержка вложенных объектов.

• Маппинг.

• Тонкая настройка гидрации с помощью PHP-атрибутов.

Использовать очень просто:

use Yiisoft\Hydrator\Hydrator;

$hydrator = new Hydrator();

// Наполнение существующего объекта
$hydrator->hydrate($object, $data);

// Создание нового объекта
$object = $hydrator->create(MyClass::class, $data);


И, как обычно, 100% покрытие тестами, 100% MSI, первый уровень Psalm.
🔥221👍1👾1
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 3.2

• Добавлен вывод трассировки для ошибок PHP (ранее она выводилась только для исключений).

• В мидлвари ExceptionResponder добавлена возможность вызвать у ответа метод getBody(), чтобы можно было отловить и обработать исключения, которые могут при этом возникнуть.
👍9👾2
#yiisoftHydratorValidator #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Validating Hydrator 1.0

Валидирующий гидратор — это декоратор для гидратора, который позволяет выполнить валидацию сырых данных перед наполнением объекта и валидацию самого объекта после гидрации.

Это полезно, когда входные данные поступают от пользователя, а вам нужно их проверить и получить валидный DTO.

Пример DTO:

use Yiisoft\Hydrator\Validator\Attribute\Validate;
use Yiisoft\Hydrator\Validator\ValidatedInputInterface;
use Yiisoft\Hydrator\Validator\ValidatedInputTrait;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Required;

final class InputDto implements ValidatedInputInterface
{
use ValidatedInputTrait;

#[Email]
private string $email;

#[Validate(new Required())]
private string $name;
}


Пример использования в контроллере:

use Yiisoft\Hydrator\HydratorInterface;
use Yiisoft\Hydrator\Validator\ValidatingHydrator;

public function actionEdit(
RequestInterface $request,
ValidatingHydrator $hydrator,
): ResponseInterface
{
$data = $request->getParsedBody();
$inputDto = $hydrator->create(InputDto::class, $data);

if (!$inputDto->getValidationResult()->isValid()) {
// Validation didn't pass :(
}

// Everything is fine. You can use $inputDto now.
}
👍22👾3
#yiisoftDummyProvider #ПатчРелиз #Релиз

🎁 Yii Dummy Provider 1.0.1

• Добавлено ключевое слово "testing" в composer.json , благодаря чему пользователю при установке пакета будет предложено установить его в секцию require-dev.
👍7👾2
#yiisoftPsrDummyProvider #ПатчРелиз #Релиз

🎁 PSR Dummy Provider 1.0.2

• Добавлено ключевое слово "testing" в composer.json , благодаря чему пользователю при установке пакета будет предложено установить его в секцию require-dev.
🔥6👍2👾1
#yiisoftCsrf #МинорныйРелиз #Релиз

🎁 Yii CSRF Protection Library 2.1

• Добавлена реализация CSRF-токена StubCsrfToken, которая будет полезна в тестах.

• Явно прописаны ранее транзитивные зависимости yiisoft/strings, psr/http-server-handler и ext-hash.
🔥7👍3👾1
#yiisoftTestSupport #ПатчРелиз #Релиз

🎁 Yii Test Support 3.0.1

• Добавлено ключевое слово "testing" в composer.json , благодаря чему пользователю при установке пакета будет предложено установить его в секцию require-dev.
👾2👍1🔥1
#yiisoftHydrator #МинорныйРелиз #Релиз

🎁 Yii Hydrator 1.1

• Добавлен новый класс для приведения типов NullTypeCaster, позволяющий преобразовывать следующие значения к null: null, пустая строка, пустой массив. Поведение настраиваемое, то есть можно указать, какие значение приводить, а какие нет.
👍7🔥1👾1
#yiisoftTranslatorExtractor #ПатчРелиз #Релиз

🎁 Yii Message Extractor 2.1.1

• Добавлено ключевое слово "dev" в composer.json , благодаря чему пользователю при установке пакета будет предложено установить его в секцию require-dev.
👍4👾1
#yiisoftYiiConsole #МинорныйРелиз #Релиз

🎁
Yii Console 2.2

• Добавлена возможность использовать слушатель события ErrorListiner без логгера.
👍4👾2
#yiisoftRouter #МинорныйРелиз #Релиз

🎁 Yii Router 3.1

• Добавлен атрибут RouteArgument для Yii Hydrator, который позволяет получить значение аргумента маршрута. Например:

#[RouteArgument('id')]
private string $id;


• Добавлена поддержка пакета psr/http-message версии ^2.0.
👍11🤔1👾1
#yiisoftValidator #МинорныйРелиз #Релиз

🎁 Yii Validator 1.2

• Добавлено правило OneOf.

• В методах Result::getAttributeErrorMessagesIndexedByPath() и Result::getErrorMessagesIndexedByPath() добавлен параметр $escape, который позволяет указать экранируемый символ в пути валидируемого элемента или полностью отключить экранирование.

• Добавлен сборщик отладочной информации для Yii Debug.

• Для параметра $skipOnEmpty указан более конкретный psalm-тип.

• В условиях "пустоты" значений NeverEmpty, WhenEmpty, WhenMissing и WhenNull параметр $isAttributeMissing сделан опциональным.

• Выполнен небольшой рефакторинг метода EmailHandler::validate().

• Исправлено ошибочное экранирование символа * при использовании метода Error::getValuePath(true).
👍6👾1
#yiisoftRequestProvider

Yii Request Provider

Новый репозиторий, в который переедет из Yii Input HTTP провайдер PSR-запроса (ServerRequestInterface) .
Please open Telegram to view this post
VIEW IN TELEGRAM
👾4
#yiisoftYiiRunnerRoadrunner #МажорныйРелиз #Релиз

🎁 Yii RoadRunner Runner 3.0

• Добавлен раннер для gRPC-запросов.

• Класс RoadRunnerApplicationRunner переименован в RoadRunnerHttpApplicationRunner.

• Добавлена поддержка пакета psr/http-message версии ^2.0.

• Минимальная версия PHP повышена до 8.1.
🔥9👍1👾1
#yiisoftRequestProvider #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Request Provider 1.0

Пакет позволяет использовать объект PSR-7 запроса (ServerRequestInterface) в качестве зависимости.

Пример:

use \Yiisoft\RequestProvider\RequestProviderInterface;

final class MyService
{
public function __construct(
private RequestProviderInterface $requestProvider
) {
}

public function doIt()
{
$request = $this->requestProvider->get();
// ...
}
}
👍10👾2
#yiisoftDataResponse #МинорныйРелиз #Релиз

🎁 Yii Data Response 2.1

• Добавлен форматер PlainTextDataResponseFormatter и соответствующая мидлварь FormatDataResponseAsPlainText.

• Добавлена поддержка пакета psr/http-message версии ^2.0.

• Минимальная версия PHP поднята до 8.1 и выполнен соответствующий рефакторинг.

• Явно прописаны ранее транзитивные зависимости psr/http-factory и psr/http-server-handler.
👍6👾2
#yiisoftDataCycle

Yii Data Cycle

Новый репозиторий, в который переедет часть кода из готовящегося к релизу Yii Cycle (по аналогии с https://github.com/yiisoft/data-db).
🔥1