Spec-Zone.ru › Symfony 2.7

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) устаревший

устаревший

since версия 2.5, будет удалена в 3.0. Используйте {@link Context\ExecutionContextInterface::buildViolation()} вместо этого.

Добавляет нарушение в узел графа валидации по указанному относительно текущего пути свойству.

Параметры

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) устаревший

устаревший

since версия 2.5, будет удалена в 3.0. Используйте {@link Context\ExecutionContextInterface::getValidator()} вместо этого.

Проверяет заданное значение в рамках текущей проверки.

Значение может быть любым значением, распознаваемым используемой фабрикой метаданных (см. {@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) устаревший

устаревший

since версия 2.5, будет удалена в 3.0. Используйте {@link Context\ExecutionContextInterface::getValidator()} вместо этого.

Проверяет значение по ограничению.

Используйте параметр $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() устаревший

устаревший

since версия 2.5, будет удалена в 3.0. Используйте {@link Context\ExecutionContextInterface::getValidator()} вместо этого и вызывайте {@link Validator\ValidatorInterface::getMetadataFor()} или {@link Validator\ValidatorInterface::hasMetadataFor()} там.

Возвращает используемую фабрику метаданных.

Возвращаемое значение

Интерфейс фабрики метаданных Фабрика метаданных

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.7/Symfony/Component/Validator/Context/ExecutionContextInterface.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API