1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
<?php
namespace ICanBoogie\Validate\Validator;
use ICanBoogie\Validate\Context;
class Regex extends AbstractValidator
{
const ALIAS = 'regex';
const DEFAULT_MESSAGE = "`{value}` does not match pattern";
const PARAM_PATTERN = 'pattern';
const OPTION_NOT_MATCH = 'not_match';
const MESSAGE_ARG_PATTERN = 'pattern';
const NOT_MATCH = true;
const MATCH = false;
public function validate($value, Context $context)
{
$pattern = $context->param(self::PARAM_PATTERN);
$not_match = $context->option(self::OPTION_NOT_MATCH);
$context->message_args[self::MESSAGE_ARG_PATTERN] = $pattern;
$result = preg_match($pattern, $value);
return $not_match ? $result !== 1 : $result === 1;
}
protected function get_params_mapping()
{
return [ self::PARAM_PATTERN, self::OPTION_NOT_MATCH ];
}
}