tflori/verja

View on GitHub
src/Validator/Contains.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace Verja\Validator;

use Verja\Error;
use Verja\Validator;

class Contains extends Validator
{
    /** @var string */
    protected $subString;

    /**
     * Contains constructor.
     *
     * @param string $subString
     */
    public function __construct(string $subString)
    {
        $this->subString = $subString;
    }

    /** {@inheritdoc} */
    public function validate($value, array $context = []): bool
    {
        if (!is_string($value) || strpos($value, $this->subString) === false) {
            $this->error = new Error(
                'NOT_CONTAINS',
                $value,
                sprintf('value should contain "%s"', $this->subString),
                [ 'subString' => $this->subString ]
            );
            return false;
        }

        return true;
    }

    /** {@inheritdoc} */
    public function getInverseError($value)
    {
        return new Error(
            'CONTAINS',
            $value,
            sprintf('value should not contain "%s"', $this->subString),
            [ 'subString' => $this->subString ]
        );
    }
}