class PrimitiveTypeConstraintValidator

Validates the PrimitiveType constraint.

Hierarchy

Expanded class hierarchy of PrimitiveTypeConstraintValidator

File

drupal/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php, line 19
Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraintValidator.

Namespace

Drupal\Core\Validation\Plugin\Validation\Constraint
View source
class PrimitiveTypeConstraintValidator extends ConstraintValidator {

  /**
   * Implements \Symfony\Component\Validator\ConstraintValidatorInterface::validate().
   */
  public function validate($value, Constraint $constraint) {
    if (!isset($value)) {
      return;
    }
    switch ($constraint->type) {
      case Primitive::BINARY:
        $valid = is_resource($value);
        break;
      case Primitive::BOOLEAN:
        $valid = is_bool($value) || $value === 0 || $value === '0' || $value === 1 || $value == '1';
        break;
      case Primitive::DATE:
        $valid = $value instanceof DrupalDateTime && !$value
          ->hasErrors();
        break;
      case Primitive::DURATION:
        $valid = $value instanceof DateInterval;
        break;
      case Primitive::FLOAT:
        $valid = filter_var($value, FILTER_VALIDATE_FLOAT) !== FALSE;
        break;
      case Primitive::INTEGER:
        $valid = filter_var($value, FILTER_VALIDATE_INT) !== FALSE;
        break;
      case Primitive::STRING:

        // PHP integers, floats or booleans are valid strings also, so we
        // cannot use is_string() here.
        $valid = is_scalar($value);
        break;
      case Primitive::URI:
        $valid = filter_var($value, FILTER_VALIDATE_URL);
        break;
      default:
        $valid = FALSE;
        break;
    }
    if (!$valid) {
      $this->context
        ->addViolation($constraint->message, array(
        '%value' => is_object($value) ? get_class($value) : (is_array($value) ? 'Array' : (string) $value),
        '%type' => $constraint->type,
      ));
    }
  }

}

Members