Разрешить включать серьезность в 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, чтобы увидеть несколько скриншотов этого нового дизайна.