- preg_match: documentation ( source)
- sprintf: documentation ( source)
<?php
class CorrectStructureValidator implements ValidatorRuleInterface
{
private string $format = 'Поле должно иметь следующий вид: %s. Вы написали - %s.';
private string $pattern;
private string $verbalDescriptionOfPattern;
public function __construct(string $pattern, string $verbalDescriptionOfPattern)
{
$this->pattern = $pattern;
$this->verbalDescriptionOfPattern = $verbalDescriptionOfPattern;
}
public function __invoke(mixed $value): ?ValidationError
{
$result = preg_match($this->pattern, $value);
if (!result) {
$errorText = sprintf(
$this->format,
$this->verbalDescriptionOfPattern,
$value
);
return new ValidationError($errorText);
} else {
return null;
}
}
}