Начиная с Symfony 3.3 файл app/autoload.php исчез. Но я использовал его для регистрации пользовательского типа сопоставления, как описано здесь.
Мой текущий app/autoload.php выглядит так:
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
use Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver;
use Doctrine\ODM\MongoDB\Types\Type;
/** @var ClassLoader $loader */
$loader = require __DIR__.'/../vendor/autoload.php';
Type::addType("MyCustomType", "Com\\MyBundle\\Db\\MyCustomTypeClass");
AnnotationRegistry::registerLoader([$loader, 'loadClass']);
AnnotationDriver::registerAnnotationClasses();
return $loader;
Как указано здесь, AnnotationDriver::registerAnnotationClasses();
больше не нужно вызывать с Symfony 3.3. Но я не знаю, куда положить
Type::addType("MyCustomType", "Com\\MyBundle\\Db\\MyCustomTypeClass");
Я попытался поместить его в метод boot()
класса MyBundle
, который расширяет Bundle
. Но когда я впервые запускаю свои модульные тесты после применения изменения, я получаю InvalidArgumentException: Invalid type specified "MyCustomType".
. Когда я выполняю их снова, я получаю Doctrine\ODM\MongoDB\Mapping\MappingException: Type MyCustomType already exists.
.