daikon-cqrs/validize

View on GitHub
src/Validator/IntValueValidator.php

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
<?php declare(strict_types=1);
/**
 * This file is part of the daikon-cqrs/validize project.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Daikon\Validize\Validator;

use Daikon\Interop\Assert;
use Daikon\ValueObject\IntValue;

final class IntValueValidator extends Validator
{
    /** @param mixed $input */
    protected function validate($input): IntValue
    {
        $settings = $this->getSettings();
        $min = $settings['min'] ?? PHP_INT_MIN;
        $max = $settings['max'] ?? PHP_INT_MAX;

        Assert::that($input)
            ->integerish('Must be an integer.')
            ->greaterOrEqualThan($min, "Must be at least $min.")
            ->lessOrEqualThan($max, "Must be at most $max.");

        return IntValue::fromNative($input);
    }
}