Новое в Symfony 7.1: Ограничения MacAddress и Charset

Источник: «New in Symfony 7.1: MacAddress and Charset Constraints»
Symfony 7.1 добавляет два новых ограничения для проверки MAC-адресов и набора символов, в которых закодировано содержимое.

Symfony предоставляет десятки ограничений валидации для выполнения любого вида проверки ваших данных. В Symfony 7.1 мы расширяем этот список двумя новыми ограничениями.

Ограничение MacAddress

Это ограничение гарантирует, что заданное значение является валидным MAC-адресом. Внутренне оно использует опцию FILTER_VALIDATE_MAC PHP-функции filter_var. Используйте её всякий раз, когда необходимо проверить свойство такого типа:

// src/Entity/Device.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Device
{
// ...

#[Assert\MacAddress]
protected string $mac;
}

По умолчанию все типы MAC-адресов считаются валидными, но можно использовать параметр type, чтобы ограничить тип MAC-адресов, которые вы хотите считать валидными:

#[Assert\MacAddress(type: 'local_no_broadcast')]
protected string $mac;

Прочитайте документацию по ограничениям MacAddress, чтобы узнать обо всех доступных типах.

Ограничение Charset

Это новое ограничение гарантирует, что заданная строка (или объект Stringable) закодирована в указанной кодировке. Это может пригодиться, например, при работе с DTO, содержащими файловые данные, и вам нужно проверить, что эти данные закодированы в определённой кодовой таблице, например UTF-8:

// src/Entity/FileDto.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class FileDto
{
// ...

#[Assert\Charset('UTF-8')]
protected string $content;
}

Вы можете принимать более одной кодировки, и их возможные значения совпадают с используемыми в PHP-функции mb_detect_encoding:

#[Assert\Charset(['ASCII', 'JIS', 'UTF-8'])]
protected string $content;

Дополнительные материалы

Предыдущая Статья

Совет по безопасности: Повышение привилегий через шаблоны домена

Следующая Статья

Новое в Symfony 7.1: Атрибут MapUploadedFile