Т.е. в IDE в подсказках методов не видно, но они есть и их можно вызвать.
could not be found with constraint "2.0"
public static createValue1(): self
{
return new self::__construct(self::VALUE1);
}
class MyCustomEnum
{
private const VALUE1 = 'value1';
private const VALUE2 = 'value2';
private const VALUE3 = 'value3';
private const ALLOWED_VALUES = [
self::VALUE1, self::VALUE2, self::VALUE3
];
private string $value;
public function __construct(string $value)
{
if (!in_array($value, self::ALLOWED_VALUES, true)) {
throw new Exception('Unsupported enum value');
}
$this->value = $value;
}
}
Вы хотите чтобы поле соблюдало хотя бы одно из двух правил валидации:
- строка пустая
- строка необходимой длины И соответствует регулярному выражению.
AtLeastOneOf позволяет реализовать логику одно из .
All позволяет объединить ограничения по длине И регулярной в одно правило.