Новое в Symfony 7.1: Ограничения MacAddress и Charset
Symfony предоставляет десятки ограничений валидации для выполнения любого вида проверки ваших данных. В Symfony 7.1 мы расширяем этот список двумя новыми ограничениями.
Ограничение MacAddress
- Pull Request: [Validator] Add MacAddress constraint for validating MAC address #51862 Ninos Ego
- Pull Request: [Validator] Add support for types (
ALL*
,LOCAL_*
,UNIVERSAL_*
,UNICAST_*
,MULTICAST_*
,BROADCAST
) in MacAddress constraint #54473 Ninos Ego
Это ограничение гарантирует, что заданное значение является валидным 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;