class ExecutionContext
Same name in this branch
- 11.1.x core/lib/Drupal/Core/Validation/ExecutionContext.php \Drupal\Core\Validation\ExecutionContext
The context used and created by {@link ExecutionContextFactory}.
@author Bernhard Schussek <bschussek@gmail.com>
@internal
Hierarchy
- class \Symfony\Component\Validator\Context\ExecutionContext implements \Symfony\Component\Validator\Context\ExecutionContextInterface
Expanded class hierarchy of ExecutionContext
See also
3 files declare their use of ExecutionContext
- CompoundConstraintTestCase.php in vendor/
symfony/ validator/ Test/ CompoundConstraintTestCase.php - ConstraintValidatorTestCase.php in vendor/
symfony/ validator/ Test/ ConstraintValidatorTestCase.php - RecursiveContextualValidator.php in vendor/
symfony/ validator/ Validator/ RecursiveContextualValidator.php
File
-
vendor/
symfony/ validator/ Context/ ExecutionContext.php, line 38
Namespace
Symfony\Component\Validator\ContextView source
class ExecutionContext implements ExecutionContextInterface {
/**
* The violations generated in the current context.
*/
private ConstraintViolationList $violations;
/**
* The currently validated value.
*/
private mixed $value = null;
/**
* The currently validated object.
*/
private ?object $object = null;
/**
* The property path leading to the current value.
*/
private string $propertyPath = '';
/**
* The current validation metadata.
*/
private ?MetadataInterface $metadata = null;
/**
* The currently validated group.
*/
private ?string $group = null;
/**
* The currently validated constraint.
*/
private ?Constraint $constraint = null;
/**
* Stores which objects have been validated in which group.
*
* @var bool[][]
*/
private array $validatedObjects = [];
/**
* Stores which class constraint has been validated for which object.
*
* @var bool[]
*/
private array $validatedConstraints = [];
/**
* Stores which objects have been initialized.
*
* @var bool[]
*/
private array $initializedObjects = [];
/**
* @var \SplObjectStorage<object, string>
*/
private \SplObjectStorage $cachedObjectsRefs;
/**
* @internal Called by {@link ExecutionContextFactory}. Should not be used in user code.
*
* @param mixed $root the root value of the validated object graph
*/
public function __construct(ValidatorInterface $validator, mixed $root, TranslatorInterface $translator, ?string $translationDomain = null) {
$this->violations = new ConstraintViolationList();
$this->cachedObjectsRefs = new \SplObjectStorage();
}
public function setNode(mixed $value, ?object $object, ?MetadataInterface $metadata, string $propertyPath) : void {
$this->value = $value;
$this->object = $object;
$this->metadata = $metadata;
$this->propertyPath = $propertyPath;
}
public function setGroup(?string $group) : void {
$this->group = $group;
}
public function setConstraint(Constraint $constraint) : void {
$this->constraint = $constraint;
}
public function addViolation(string|\Stringable $message, array $parameters = []) : void {
$this->violations
->add(new ConstraintViolation($this->translator
->trans($message, $parameters, $this->translationDomain), $message, $parameters, $this->root, $this->propertyPath, $this->getValue(), null, null, $this->constraint));
}
public function buildViolation(string|\Stringable $message, array $parameters = []) : ConstraintViolationBuilderInterface {
return new ConstraintViolationBuilder($this->violations, $this->constraint, $message, $parameters, $this->root, $this->propertyPath, $this->getValue(), $this->translator, $this->translationDomain);
}
public function getViolations() : ConstraintViolationListInterface {
return $this->violations;
}
public function getValidator() : ValidatorInterface {
return $this->validator;
}
public function getRoot() : mixed {
return $this->root;
}
public function getValue() : mixed {
if ($this->value instanceof LazyProperty) {
return $this->value
->getPropertyValue();
}
return $this->value;
}
public function getObject() : ?object {
return $this->object;
}
public function getMetadata() : ?MetadataInterface {
return $this->metadata;
}
public function getGroup() : ?string {
return $this->group;
}
public function getConstraint() : ?Constraint {
return $this->constraint;
}
public function getClassName() : ?string {
return $this->metadata instanceof MemberMetadata || $this->metadata instanceof ClassMetadataInterface ? $this->metadata
->getClassName() : null;
}
public function getPropertyName() : ?string {
return $this->metadata instanceof PropertyMetadataInterface ? $this->metadata
->getPropertyName() : null;
}
public function getPropertyPath(string $subPath = '') : string {
return PropertyPath::append($this->propertyPath, $subPath);
}
public function markGroupAsValidated(string $cacheKey, string $groupHash) : void {
if (!isset($this->validatedObjects[$cacheKey])) {
$this->validatedObjects[$cacheKey] = [];
}
$this->validatedObjects[$cacheKey][$groupHash] = true;
}
public function isGroupValidated(string $cacheKey, string $groupHash) : bool {
return isset($this->validatedObjects[$cacheKey][$groupHash]);
}
public function markConstraintAsValidated(string $cacheKey, string $constraintHash) : void {
$this->validatedConstraints[$cacheKey . ':' . $constraintHash] = true;
}
public function isConstraintValidated(string $cacheKey, string $constraintHash) : bool {
return isset($this->validatedConstraints[$cacheKey . ':' . $constraintHash]);
}
public function markObjectAsInitialized(string $cacheKey) : void {
$this->initializedObjects[$cacheKey] = true;
}
public function isObjectInitialized(string $cacheKey) : bool {
return isset($this->initializedObjects[$cacheKey]);
}
/**
* @internal
*/
public function generateCacheKey(object $object) : string {
if (!isset($this->cachedObjectsRefs[$object])) {
$this->cachedObjectsRefs[$object] = spl_object_hash($object);
}
return $this->cachedObjectsRefs[$object];
}
public function __clone() {
$this->violations = clone $this->violations;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
ExecutionContext::$cachedObjectsRefs | private | property | ||
ExecutionContext::$constraint | private | property | The currently validated constraint. | |
ExecutionContext::$group | private | property | The currently validated group. | |
ExecutionContext::$initializedObjects | private | property | Stores which objects have been initialized. | |
ExecutionContext::$metadata | private | property | The current validation metadata. | |
ExecutionContext::$object | private | property | The currently validated object. | |
ExecutionContext::$propertyPath | private | property | The property path leading to the current value. | |
ExecutionContext::$validatedConstraints | private | property | Stores which class constraint has been validated for which object. | |
ExecutionContext::$validatedObjects | private | property | Stores which objects have been validated in which group. | |
ExecutionContext::$value | private | property | The currently validated value. | |
ExecutionContext::$violations | private | property | The violations generated in the current context. | |
ExecutionContext::addViolation | public | function | Adds a violation at the current node of the validation graph. | Overrides ExecutionContextInterface::addViolation |
ExecutionContext::buildViolation | public | function | Returns a builder for adding a violation with extended information. | Overrides ExecutionContextInterface::buildViolation |
ExecutionContext::generateCacheKey | public | function | @internal | |
ExecutionContext::getClassName | public | function | Returns the class name of the current node. | Overrides ExecutionContextInterface::getClassName |
ExecutionContext::getConstraint | public | function | ||
ExecutionContext::getGroup | public | function | Returns the validation group that is currently being validated. | Overrides ExecutionContextInterface::getGroup |
ExecutionContext::getMetadata | public | function | Returns the metadata for the currently validated value. | Overrides ExecutionContextInterface::getMetadata |
ExecutionContext::getObject | public | function | Returns the currently validated object. | Overrides ExecutionContextInterface::getObject |
ExecutionContext::getPropertyName | public | function | Returns the property name of the current node. | Overrides ExecutionContextInterface::getPropertyName |
ExecutionContext::getPropertyPath | public | function | Returns the property path to the value that the validator is currently validating. |
Overrides ExecutionContextInterface::getPropertyPath |
ExecutionContext::getRoot | public | function | Returns the value at which validation was started in the object graph. | Overrides ExecutionContextInterface::getRoot |
ExecutionContext::getValidator | public | function | Returns the validator. | Overrides ExecutionContextInterface::getValidator |
ExecutionContext::getValue | public | function | Returns the value that the validator is currently validating. | Overrides ExecutionContextInterface::getValue |
ExecutionContext::getViolations | public | function | Returns the violations generated by the validator so far. | Overrides ExecutionContextInterface::getViolations |
ExecutionContext::isConstraintValidated | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::isConstraintValidated |
ExecutionContext::isGroupValidated | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::isGroupValidated |
ExecutionContext::isObjectInitialized | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::isObjectInitialized |
ExecutionContext::markConstraintAsValidated | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::markConstraintAsValidated |
ExecutionContext::markGroupAsValidated | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::markGroupAsValidated |
ExecutionContext::markObjectAsInitialized | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::markObjectAsInitialized |
ExecutionContext::setConstraint | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::setConstraint |
ExecutionContext::setGroup | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::setGroup |
ExecutionContext::setNode | public | function | Warning: Should not be called by user code, to be used by the validator engine only. | Overrides ExecutionContextInterface::setNode |
ExecutionContext::__clone | public | function | ||
ExecutionContext::__construct | public | function | @internal Called by {@link ExecutionContextFactory}. Should not be used in user code. |