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\ValidatorView 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's property. |
Overrides ValidatorInterface::validatePropertyValue |
TraceableValidator::__construct | public | function |