Я пытаюсь добавить компонент проверки Symfony в устаревший проект, который использует:
symfony / validator: 3.3.0
symfony / инъекция зависимости: 3.3.18
доктрина / аннотации: 1.5.0
доктрина / орма: 2.6.2
Я протестировал компонент проверки на каком-то простом объекте, подобном этому:
<?php
declare(strict_types=1);
use Symfony\Component\Validator\Constraints as Assert;
class UserRequest
{
/**
* @Assert\NotBlank()
* @var int
*/
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function getId(): int
{
return $this->id;
}
}
И в своем сервисе я проверил этот объект следующим образом:
$request = new UserRequest(null);
$validator = Validation::createValidatorBuilder()
->enableAnnotationMapping() // Using default doctrine annotation reader.
->getValidator();
$violations = $validator->validate($request);
Но он выдал ошибку 500, указав, что эти классы ограничений не могут быть автоматически загружены.Поэтому я попытался найти в Интернете исправление, которое привело меня к добавлению в файл начальной загрузки:
$loader = require 'vendor/autoload.php';
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader([$loader, 'loadClass']);
Он работал хорошо, но этот метод registerLoader устарел в Symfony2.
Как я могу заставить его работать в Symfony3 без ручной загрузки этих классов ограничений?