Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. CallbackValidator.php

function CallbackValidator::validate

Overrides ConstraintValidatorInterface::validate

File

vendor/symfony/validator/Constraints/CallbackValidator.php, line 26

Class

CallbackValidator
Validator for Callback constraint.

Namespace

Symfony\Component\Validator\Constraints

Code

public function validate(mixed $object, Constraint $constraint) : void {
    if (!$constraint instanceof Callback) {
        throw new UnexpectedTypeException($constraint, Callback::class);
    }
    $method = $constraint->callback;
    if ($method instanceof \Closure) {
        $method($object, $this->context, $constraint->payload);
    }
    elseif (\is_array($method)) {
        if (!\is_callable($method)) {
            if (isset($method[0]) && \is_object($method[0])) {
                $method[0] = $method[0]::class;
            }
            throw new ConstraintDefinitionException(json_encode($method) . ' targeted by Callback constraint is not a valid callable.');
        }
        $method($object, $this->context, $constraint->payload);
    }
    elseif (null !== $object) {
        if (!method_exists($object, $method)) {
            throw new ConstraintDefinitionException(\sprintf('Method "%s" targeted by Callback constraint does not exist in class "%s".', $method, get_debug_type($object)));
        }
        $reflMethod = new \ReflectionMethod($object, $method);
        if ($reflMethod->isStatic()) {
            $reflMethod->invoke(null, $object, $this->context, $constraint->payload);
        }
        else {
            $reflMethod->invoke($object, $this->context, $constraint->payload);
        }
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal