class UriHostConstraintValidator

Validates if a string conforms to the RFC 3986 host component.

Hierarchy

  • class \Drupal\Core\Validation\Plugin\Validation\Constraint\UriHostConstraintValidator extends \Symfony\Component\Validator\ConstraintValidator

Expanded class hierarchy of UriHostConstraintValidator

File

core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UriHostConstraintValidator.php, line 14

Namespace

Drupal\Core\Validation\Plugin\Validation\Constraint
View source
class UriHostConstraintValidator extends ConstraintValidator {
    
    /**
     * {@inheritdoc}
     */
    public function validate($value, Constraint $constraint) : void {
        assert($constraint instanceof UriHostConstraint);
        if ($value === NULL || $value === '') {
            return;
        }
        if (!is_string($value)) {
            throw new UnexpectedTypeException($value, 'string');
        }
        if (!$this->isValid($value)) {
            $this->context
                ->addViolation($constraint->message);
        }
    }
    
    /**
     * Return TRUE if value is a valid hostname or IP address literal.
     */
    protected function isValid(string $value) : bool {
        if (filter_var($value, \FILTER_VALIDATE_DOMAIN, \FILTER_FLAG_HOSTNAME) !== FALSE) {
            return TRUE;
        }
        if (str_starts_with($value, '[') && str_ends_with($value, ']')) {
            $address = substr($value, 1, strlen($value) - 2);
            if (filter_var($address, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6) !== FALSE) {
                return TRUE;
            }
        }
        return FALSE;
    }

}

Members

Title Sort descending Modifiers Object type Summary
UriHostConstraintValidator::isValid protected function Return TRUE if value is a valid hostname or IP address literal.
UriHostConstraintValidator::validate public function

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.