Новое в Symfony 5.1: Разные улучшения (Часть 3)

Разрешить включать серьезность в ConstraintViolationList

Компонент Symfony Validator позволяет включать полезную нагрузку в нарушения ограничений с серьезностью ошибки и другими данными. В Symfony 5.1 улучшили компонент Serializer, чтобы также можно было добавлять полезную нагрузку с данными в ConstraintViolationList:

use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
use Symfony\Component\Validator\Constraints\NotNull;
use Symfony\Component\Validator\ConstraintViolation;
use Symfony\Component\Validator\ConstraintViolationList;

$constraint = new NotNull();
$constraint->payload = ['severity' => 'warning', 'someOtherField' => 'someValue'];
$list = new ConstraintViolationList([
    new ConstraintViolation(/* ... */, $constraint),
]);

$result = $this->normalizer->normalize($list, null, [
    // pass an array of field names to add only those to the payload
    // pass NULL or TRUE to pass all fields
    ConstraintViolationListNormalizer::PAYLOAD_FIELDS => ['severity']]
);
$payload = $result['violations'][0]['payload'];
// $payload = ['severity' => 'warning'];

Почтовый обработчик логов

В ваших приложениях Symfony ведение журнала должно управляться с помощью специальных инструментов или сервисов. Однако в некоторых обстоятельствах (например, при создании прототипа, при разработке крошечных приложений и т. д.) Отправка журналов по электронной почте при возникновении ошибки может быть правильным решением, учитывая все обстоятельства.

Вот почему в Symfony 5.1 добавили новый обработчик журналов Monolog, который использует компонент Mailer для отправки журналов по электронной почте.

Новый договор об амортизации

Symfony Contracts – это набор абстракций, извлеченных из компонентов Symfony. В Symfony 5.1 начали использовать новый контракт, связанный с устареванием. Единственный метод, предусмотренный контрактом:

trigger_deprecation(string $package, string $version, string $message, ...$args): void;

Это обеспечит более значимые и стандартизированные сообщения об устаревании в ваших приложениях, поэтому обновили собственный код Symfony, чтобы использовать новый метод:

// Before
@trigger_error(
    'Not setting the "framework.router.utf8" configuration option is deprecated
    since Symfony 5.1, it will default to "true" in Symfony 6.0.',
    E_USER_DEPRECATED
);

// After
trigger_deprecation(
    'symfony/framework-bundle', '5.1',
    'Not setting the "framework.router.utf8" configuration option is deprecated,
    it will default to "true" in version 6.0.'
);

Темный режим на страницах исключений

Добавление поддержки «темного режима» или «темных тем» становится все более популярным в инструментах разработчика. Мы уже реализовали эту функцию в symfony.com и Symfony Profiler, но в Symfony 5.1 также добавили поддержку темного режима на страницах исключений.

Ознакомьтесь с запросом на слияние #34924, чтобы увидеть несколько скриншотов этого нового дизайна.