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 56 57 58 59 60 61 62 63
<?php
namespace ICanBoogie\Validate\Validator;
use ICanBoogie\Validate\Context;
use ICanBoogie\Validate\Render;
abstract class AbstractRangeValidator extends AbstractValidator
{
const PARAM_MIN = 'min';
const PARAM_MAX = 'max';
const MESSAGE_ARG_MIN = self::PARAM_MIN;
const MESSAGE_ARG_MAX = self::PARAM_MAX;
const MESSAGE_ARG_VALUE_TYPE = 'value_type';
public function validate($value, Context $context)
{
$min = $context->param(self::PARAM_MIN);
$max = $context->param(self::PARAM_MAX);
$context->message_args[self::MESSAGE_ARG_MIN] = $min;
$context->message_args[self::MESSAGE_ARG_MAX] = $max;
$context->message_args[self::MESSAGE_ARG_VALUE_TYPE] = Render::render_type($min);
return $this->compare($value, $min, $max);
}
protected function get_params_mapping()
{
return [ self::PARAM_MIN, self::PARAM_MAX ];
}
abstract protected function compare($value, $min, $max);
}