1: <?php
2: 3: 4: 5: 6: 7:
8:
9: namespace Wei\Validator;
10:
11: 12: 13: 14: 15:
16: class DivisibleBy extends BaseValidator
17: {
18: protected $notDivisibleMessage = '%name% must be divisible by %divisor%';
19:
20: protected $negativeMessage = '%name% must not be divisible by %divisor%';
21:
22: 23: 24: 25: 26:
27: protected $divisor = 1;
28:
29: 30: 31:
32: public function __invoke($input, $divisor = null)
33: {
34: $divisor && $this->storeOption('divisor', $divisor);
35:
36: return $this->isValid($input);
37: }
38:
39: 40: 41:
42: protected function doValidate($input)
43: {
44: if (!$this->isString($input)) {
45: $this->addError('notDivisible');
46: return false;
47: }
48:
49: if (is_float($this->divisor)) {
50: $result = fmod($input, $this->divisor);
51: } else {
52: $result = $input % $this->divisor;
53: }
54:
55: if (0 != $result) {
56: $this->addError('notDivisible');
57: return false;
58: }
59: return true;
60: }
61: }
62: