Использование компонента проверки Symfony для проверки объектов с динамическими свойствами
Я пытаюсь проверить данные в импортированном csv-файле с помощью компонента проверки Symfony2 (начиная с ветки 2.1), используя внешний набор правил yml (не в проекте Symfony):
use Symfony\Component\Validator\Validation;
$builder = Validation::createValidatorBuilder();
$builder->addYamlMapping('rules.yml');
$validator = $builder->getValidator();
$row = (object)array('name' => 'foo');
$violations = $validator->validate($row);
Это мой файл yml:
stdClass:
properties:
name:
- MinLength: 10
Теперь возникает проблема, связанная с тем, что компонент Validator, по-видимому, не позволяет проверять объекты с динамическими свойствами (например, stdClass
или любой другой класс с магическими геттерами и сеттерами).
Когда я запускаю этот код, я получаю сообщение говоря:
[Symfony\Component\Validator\Exception\ValidatorException]
Property forename does not exist in class stdClass
Это связано с PropertyMetaclass.php в выделенной строке, где существование проверяется с помощью property_exists()
, что, очевидно, не работает, поскольку оно проверяет класс, а не объект.
Кто-нибудь знает, как я могу заставить валидатор работать с объектами, имеющими динамические свойства?
2 answers
К сожалению, в настоящее время невозможно проверить объекты с динамическими свойствами в соответствии с этим официальным заявлением , поэтому я открыл запрос функции .
Теперь мой обходной путь состоял в том, чтобы написать очень простой класс генератора кода, который сбрасывает определения классов в файл на диске, который затем используется в качестве файла класса для данных.
Объект не относится к типу PHP.
Используйте класс STD в вашем файле yaml вместо объекта