class UriHostConstraintValidator

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

Hierarchy

  • class \Drupal\Core\Validation\Plugin\Validation\Constraint\UriHostConstraintValidator implements \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.