ExecutionContextInterface
интерфейс ExecutionContextInterface реализует ExecutionContextInterface
Контекст выполнения валидации.
Контекст собирает все нарушения, сгенерированные во время валидации. По умолчанию валидаторы выполняют всю валидацию в новом контексте:
$violations = $validator->validate($object);
Когда вы делаете другой вызов валидатору, в то время как валидация находится в процессе, нарушения будут изолированы друг от друга:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
// The violations are not added to $this->context
$violations = $validator->validate($value);
}
Однако, если вы хотите добавить нарушения в текущий контекст, используйте метод {@link ValidatorInterface::inContext()}:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
// The violations are added to $this->context
$validator
->inContext($this->context)
->validate($value)
;
}
Кроме того, контекст предоставляет информацию о текущем состоянии валидатора, например, о текущем классе, проверяемом свойстве и т. д. Эти значения изменяются со временем, поэтому вы не можете сохранить контекст и ожидать, что методы всё ещё будут возвращать те же результаты позже.
Методы
| addViolation(string $message, array $params = array(), mixed $invalidValue = null, int|null $plural = null, int|null $code = null) Добавляет нарушение в текущей узле графа валидации. | из ExecutionContextInterface | |
| addViolationAt(string $subPath, string $message, array $parameters = array(), mixed $invalidValue = null, int|null $plural = null, int|null $code = null) устаревший Добавляет нарушение в узел графа валидации с заданным путём свойства относительно текущего пути свойства. | из ExecutionContextInterface | |
| validate(mixed $value, string $subPath = '', null|string|string[] $groups = null, bool $traverse = false, bool $deep = false) устаревший Проверяет значение в рамках текущей валидации. | из ExecutionContextInterface | |
| validateValue(mixed $value, Constraint|Constraint[] $constraints, string $subPath = '', null|string|string[] $groups = null) устаревший Проверяет значение на соответствие ограничению. | из ExecutionContextInterface | |
| ConstraintViolationListInterface | getViolations() Возвращает нарушения, сгенерированные валидатором до сих пор. | из ExecutionContextInterface |
| mixed | getRoot() Возвращает значение, с которого началась валидация в объектной графе. | из ExecutionContextInterface |
| mixed | getValue() Возвращает значение, которое валидатор в данный момент проверяет. | из ExecutionContextInterface |
| MetadataInterface|null | getMetadata() Возвращает метаданные для текущего проверяемого значения. | из ExecutionContextInterface |
| MetadataFactoryInterface | getMetadataFactory() устаревший Возвращает используемую фабрику метаданных. | из ExecutionContextInterface |
| string | getGroup() Возвращает группу валидации, которая в данный момент проверяется. | из ExecutionContextInterface |
| string|null | getClassName() Возвращает имя класса текущего узла. | из ExecutionContextInterface |
| string|null | getPropertyName() Возвращает имя свойства текущего узла. | из ExecutionContextInterface |
| string | getPropertyPath(string $subPath = '') Возвращает путь к свойству значения, которое в данный момент проверяется валидатором. | из ExecutionContextInterface |
| ConstraintViolationBuilderInterface | buildViolation(string $message, array $parameters = array()) Возвращает билдер для добавления нарушения с дополнительной информацией. | |
| ValidatorInterface | getValidator() Возвращает валидатор. | |
| object|null | getObject() Возвращает текущий проверяемый объект. | |
| setNode(mixed $value, object|null $object, MetadataInterface $metadata = null, string $propertyPath) Устанавливает текущее проверяемое значение. | ||
| setGroup(string|null $group) Устанавливает текущую группу валидации. | ||
| setConstraint(Constraint $constraint) Устанавливает текущее проверяемое ограничение. | ||
| markGroupAsValidated(string $cacheKey, string $groupHash) Помечает объект как проверенный в определённой группе валидации. | ||
| bool | isGroupValidated(string $cacheKey, string $groupHash) Возвращает, был ли объект проверен в определённой группе валидации. | |
| markConstraintAsValidated(string $cacheKey, string $constraintHash) Помечает ограничение как проверенное для объекта. | ||
| bool | isConstraintValidated(string $cacheKey, string $constraintHash) Возвращает, было ли ограничение проверено для объекта. | |
| markObjectAsInitialized(string $cacheKey) Помечает, что объект был инициализирован. | ||
| bool | isObjectInitialized(string $cacheKey) Возвращает, был ли объект инициализирован. |
Подробности
addViolation(string $message, array $params = array(), mixed $invalidValue = null, int|null $plural = null, int|null $code = null)
Добавляет нарушение в текущем узле графа валидации.
Примечание: параметры $invalidValue, $plural и $code устарели начиная с версии 2.5 и будут удалены в 3.0.
Параметры
| string | $message | Сообщение об ошибке |
| array | $params | Параметры, подставляемые в сообщение об ошибке |
| mixed | $invalidValue | Неверное, проверенное значение |
| int|null | $plural | Число для множественного числа сообщения |
| int|null | $code | Код нарушения |
addViolationAt(string $subPath, string $message, array $parameters = array(), mixed $invalidValue = null, int|null $plural = null, int|null $code = null) устаревший
устаревший
Добавляет нарушение в узел графа валидации по указанному относительно текущего пути свойству.
Параметры
| string | $subPath | Относительный путь к свойству для нарушения |
| string | $message | Сообщение об ошибке |
| array | $parameters | Параметры, подставляемые в сообщение об ошибке |
| mixed | $invalidValue | Неверное, проверенное значение |
| int|null | $plural | Число для множественного числа сообщения |
| int|null | $code | Код нарушения |
validate(mixed $value, string $subPath = '', null|string|string[] $groups = null, bool $traverse = false, bool $deep = false) устаревший
устаревший
Проверяет заданное значение в рамках текущей проверки.
Значение может быть любым значением, распознаваемым используемой фабрикой метаданных (см. {@link MetadataFactoryInterface::getMetadata}), или массивом или перебираемым объектом таких значений.
Обычно вы проверяете значение, которое не является текущим узлом контекста выполнения. Для этого случая вы можете передать аргумент {@link $subPath}, который добавляется к текущему пути свойства при создании нарушения. Например, рассмотрим следующую схему объекта:
(Person)---($address: Address)---($phoneNumber: PhoneNumber)
^
Когда контекст выполнения останавливается на экземпляре Person, путь свойства — "address". При проверке экземпляра PhoneNumber сейчас, передайте "phoneNumber" в качестве подпути, чтобы правильно указать путь свойства на "address.phoneNumber":
$context->validate($address->phoneNumber, 'phoneNumber');
Любые нарушения, сгенерированные во время проверки, будут добавлены в список нарушений, к которому можно получить доступ с помощью {@link getViolations}.
Параметры
| mixed | $value | Значение для проверки |
| string | $subPath | Путь, который необходимо добавить к пути свойства контекста |
| null|string|string[] | $groups | Группы для проверки. Если вы не передаете никаких групп, будет использоваться текущая группа контекста. |
| bool | $traverse | Нужно ли перебирать значение, если это массив или экземпляр \Traversable. |
| bool | $deep | Нужно ли рекурсивно перебирать значение, если это коллекция коллекций. |
validateValue(mixed $value, Constraint|Constraint[] $constraints, string $subPath = '', null|string|string[] $groups = null) устаревший
устаревший
Проверяет значение по ограничению.
Используйте параметр $subPath для адаптации пути свойства для проверяемого значения. Например, рассмотрим следующую схему объекта:
(Person)---($address: Address)---($street: string)
^
Когда валидатор проверяет экземпляр Address, путь свойства, хранящийся в контексте выполнения, — "address". Если вы хотите вручную проверить свойство $street сейчас, передайте подпуть "street", чтобы адаптировать полный путь свойства к "address.street":
$context->validate($address->street, new NotNull(), 'street');
Параметры
| mixed | $value | Значение для проверки |
| Constraint|Constraint[] | $constraints | Ограничение(я) для проверки |
| string | $subPath | Путь для добавления к пути свойства контекста |
| null|string|string[] | $groups | Группы для проверки. Если вы не передаете никаких групп, будет использоваться текущая группа контекста. |
Список нарушений getViolations()
Возвращает нарушения, сгенерированные валидатором до сих пор.
Возвращаемое значение
| Список нарушений | Список нарушений ограничений |
mixed getRoot()
Возвращает значение, с которого началась валидация в графе объектов.
Валидатор, получив объект, перебирает свойства и связанные объекты, а также их свойства. Корень валидации — объект, с которого начался обход.
Текущее значение возвращается методом {@link getValue}.
Возвращаемое значение
| mixed | Корневое значение валидации |
mixed getValue()
Возвращает значение, которое валидатор в настоящее время проверяет.
Если вы хотите получить объект, который изначально был передан валидатору, используйте {@link getRoot}.
Возвращаемое значение
| mixed | Текущее проверяемое значение |
Интерфейс метаданных|null getMetadata()
Возвращает метаданные для текущего проверяемого значения.
В реализации по умолчанию этот метод возвращает экземпляр {@link Mapping\ClassMetadata}, если текущее значение — объект, экземпляр {@link Mapping\PropertyMetadata}, если текущее значение — значение свойства, и экземпляр {@link Mapping\GetterMetadata}, если проверяемое значение — результат метода-геттера.
Если проверяемое значение не относится к этим типам, например, если валидатор был вызван со значением и ограничением, этот метод возвращает null.
Возвращаемое значение
| Интерфейс метаданных|null | Метаданные текущего проверяемого значения. |
Интерфейс фабрики метаданных getMetadataFactory() устаревший
устаревший
Возвращает используемую фабрику метаданных.
Возвращаемое значение
| Интерфейс фабрики метаданных | Фабрика метаданных |
string getGroup()
Возвращает группу валидации, которая в настоящее время проверяется.
Возвращаемое значение
| string | Текущая группа валидации |
string|null getClassName()
Возвращает имя класса текущего узла.
Если метаданные текущего узла не реализуют {@link ClassBasedInterface} или если метаданные недоступны для текущего узла, этот метод возвращает null.
Возвращаемое значение
| string|null | Имя класса или null, если имя класса не найдено |
string|null getPropertyName()
Возвращает имя свойства текущего узла.
Если метаданные текущего узла не реализуют {@link PropertyMetadataInterface} или если метаданные недоступны для текущего узла, этот метод возвращает null.
Возвращаемое значение
| string|null | Имя свойства или null, если имя свойства не найдено |
string getPropertyPath(string $subPath = '')
Возвращает путь к свойству значения, которое в настоящее время проверяется валидатором.
Например, рассмотрим следующую схему объекта:
(Person)---($address: Address)---($street: string)
Когда экземпляр Person передается валидатору, путь свойства изначально пустой. Когда проверяется свойство $address этого человека, путь свойства — "address". Когда проверяется свойство $street связанного экземпляра Address, путь свойства — "address.street".
Свойства объектов предваряются точкой в пути свойства. Индексы массивов или объектов, реализующих интерфейс {@link \ArrayAccess}, заключаются в квадратные скобки. Например, если свойство в предыдущем примере — $addresses и содержит массив экземпляров Address, путь свойства, сгенерированный для свойства $street одного из этих адресов, например, "addresses[0].street".
Параметры
| string | $subPath | Необязательный. Приставка, добавляемая к текущему пути свойства. |
Возвращаемое значение
| string | Текущий путь свойства. Результат может быть пустой строкой, если валидатор в данный момент проверяет корневое значение графа валидации. |
ConstraintViolationBuilderInterface buildViolation(string $message, array $parameters = array())
Возвращает билдер для добавления нарушения с расширенной информацией.
Вызовите {@link ConstraintViolationBuilderInterface::addViolation()} для добавления нарушения, когда вы закончите с настройкой:
$context->buildViolation('Please enter a number between %min% and %max%.')
->setParameter('%min%', 3)
->setParameter('%max%', 10)
->setTranslationDomain('number_validation')
->addViolation();
Параметры
| string | $message | Текст сообщения об ошибке |
| array | $parameters | Параметры, подставляемые в сообщение об ошибке |
Возвращаемое значение
| ConstraintViolationBuilderInterface | Билдер для нарушения |
ValidatorInterface getValidator()
Возвращает валидатор.
Полезно, если вы хотите валидировать дополнительные ограничения:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
$violations = $validator->validateValue($value, new Length(array('min' => 3)));
if (count($violations) > 0) {
// ...
}
}
Возвращаемое значение
| ValidatorInterface |
object|null getObject()
Возвращает текущий проверяемый объект.
Если валидатор в данный момент проверяет ограничение класса, возвращается объект этого класса. Если это ограничение свойства или геттера, возвращается объект, к которому принадлежит свойство/геттер.
В других случаях возвращается null.
Возвращаемое значение
| object|null | Текущий проверяемый объект или null |
setNode(mixed $value, object|null $object, MetadataInterface $metadata = null, string $propertyPath)
Устанавливает текущее проверяемое значение.
Параметры
| mixed | $value | Проверяемое значение |
| object|null | $object | Текущий проверяемый объект |
| MetadataInterface | $metadata | Данные метаинформации о валидации |
| string | $propertyPath | Путь к текущему значению свойства |
setGroup(string|null $group)
Устанавливает текущую проверяемую группу.
Параметры
| string|null | $group | Проверяемая группа |
setConstraint(Constraint $constraint)
Устанавливает текущее проверяемое ограничение.
Параметры
| Constraint | $constraint | Проверяемое ограничение |
markGroupAsValidated(string $cacheKey, string $groupHash)
Помечает объект как валидированный в определённой группе валидации.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $groupHash | Название или хэш группы, если это последовательность групп |
bool isGroupValidated(string $cacheKey, string $groupHash)
Возвращает, был ли объект валидирован в определённой группе валидации.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $groupHash | Название или хэш группы, если это последовательность групп |
Возвращаемое значение
| bool | Был ли объект уже валидирован для этой группы |
markConstraintAsValidated(string $cacheKey, string $constraintHash)
Помечает ограничение как валидированное для объекта.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $constraintHash | Хэш ограничения |
bool isConstraintValidated(string $cacheKey, string $constraintHash)
Возвращает, было ли ограничение валидировано для объекта.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $constraintHash | Хэш ограничения |
Возвращаемое значение
| bool | Было ли ограничение уже валидировано |
markObjectAsInitialized(string $cacheKey)
Помечает, что объект был инициализирован.
Параметры
| string | $cacheKey | Хэш объекта |
См. также
| ObjectInitializerInterface |
bool isObjectInitialized(string $cacheKey)
Возвращает, был ли объект инициализирован.
Параметры
| string | $cacheKey | Хэш объекта |
Возвращаемое значение
| bool | Был ли объект уже инициализирован |
См. также
| ObjectInitializerInterface |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/2.8/Symfony/Component/Validator/Context/ExecutionContextInterface.html