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

Breadcrumb

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

class TraceableValidator

Collects some data about validator calls.

@author Maxime Steinhausser <maxime.steinhausser@gmail.com>

Hierarchy

  • class \Symfony\Component\Validator\Validator\TraceableValidator implements \Symfony\Component\Validator\Validator\ValidatorInterface, \Symfony\Contracts\Service\ResetInterface

Expanded class hierarchy of TraceableValidator

1 file declares its use of TraceableValidator
ValidatorDataCollector.php in vendor/symfony/validator/DataCollector/ValidatorDataCollector.php

File

vendor/symfony/validator/Validator/TraceableValidator.php, line 26

Namespace

Symfony\Component\Validator\Validator
View source
class TraceableValidator implements ValidatorInterface, ResetInterface {
    private array $collectedData = [];
    public function __construct(ValidatorInterface $validator) {
    }
    public function getCollectedData() : array {
        return $this->collectedData;
    }
    public function reset() : void {
        $this->collectedData = [];
    }
    public function getMetadataFor(mixed $value) : MetadataInterface {
        return $this->validator
            ->getMetadataFor($value);
    }
    public function hasMetadataFor(mixed $value) : bool {
        return $this->validator
            ->hasMetadataFor($value);
    }
    public function validate(mixed $value, Constraint|array|null $constraints = null, string|GroupSequence|array|null $groups = null) : ConstraintViolationListInterface {
        $violations = $this->validator
            ->validate($value, $constraints, $groups);
        $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 7);
        $file = $trace[0]['file'];
        $line = $trace[0]['line'];
        for ($i = 1; $i < 7; ++$i) {
            if (isset($trace[$i]['class'], $trace[$i]['function']) && 'validate' === $trace[$i]['function'] && is_a($trace[$i]['class'], ValidatorInterface::class, true)) {
                $file = $trace[$i]['file'];
                $line = $trace[$i]['line'];
                while (++$i < 7) {
                    if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && !str_starts_with($trace[$i]['function'], 'call_user_func')) {
                        $file = $trace[$i]['file'];
                        $line = $trace[$i]['line'];
                        break;
                    }
                }
                break;
            }
        }
        $name = str_replace('\\', '/', $file);
        $name = substr($name, strrpos($name, '/') + 1);
        $this->collectedData[] = [
            'caller' => compact('name', 'file', 'line'),
            'context' => compact('value', 'constraints', 'groups'),
            'violations' => iterator_to_array($violations),
        ];
        return $violations;
    }
    public function validateProperty(object $object, string $propertyName, string|GroupSequence|array|null $groups = null) : ConstraintViolationListInterface {
        return $this->validator
            ->validateProperty($object, $propertyName, $groups);
    }
    public function validatePropertyValue(object|string $objectOrClass, string $propertyName, mixed $value, string|GroupSequence|array|null $groups = null) : ConstraintViolationListInterface {
        return $this->validator
            ->validatePropertyValue($objectOrClass, $propertyName, $value, $groups);
    }
    public function startContext() : ContextualValidatorInterface {
        return $this->validator
            ->startContext();
    }
    public function inContext(ExecutionContextInterface $context) : ContextualValidatorInterface {
        return $this->validator
            ->inContext($context);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
TraceableValidator::$collectedData private property
TraceableValidator::getCollectedData public function
TraceableValidator::getMetadataFor public function Returns the metadata for the given value. Overrides MetadataFactoryInterface::getMetadataFor
TraceableValidator::hasMetadataFor public function Returns whether the class is able to return metadata for the given value. Overrides MetadataFactoryInterface::hasMetadataFor
TraceableValidator::inContext public function Returns a validator in the given execution context. Overrides ValidatorInterface::inContext
TraceableValidator::reset public function Overrides ResetInterface::reset
TraceableValidator::startContext public function Starts a new validation context and returns a validator for that context. Overrides ValidatorInterface::startContext
TraceableValidator::validate public function Validates a value against a constraint or a list of constraints. Overrides ValidatorInterface::validate
TraceableValidator::validateProperty public function Validates a property of an object against the constraints specified
for this property.
Overrides ValidatorInterface::validateProperty
TraceableValidator::validatePropertyValue public function Validates a value against the constraints specified for an object&#039;s
property.
Overrides ValidatorInterface::validatePropertyValue
TraceableValidator::__construct public function

API Navigation

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