У меня есть работающее приложение ZF2 (скелет) и вы хотите интегрировать Doctrine.
Я загрузил 2 модуля (DoctrineModule и DoctrineORMModule) из github, поскольку я не могу использовать композитор (так что, пожалуйста, не отвечайте, «получите композитор»).
После нескольких часов попыток найти проблему я продолжаю получать следующую ошибку:
Неустранимая ошибка: класс «Доктрина \ Общие \ Аннотации \ AnnotationRegistry» не найдена в доктрине / DoctrineModule / src / DoctrineModule / Module.php в строке 54.
Я трачу часы на поиск и пытается отлаживать, но я не могу найти способ исправить это. Пожалуйста, помогите мне.
DoctrineORMModule
явно не поддерживает автоматическую загрузку без композитора (поскольку это беспорядок).
Начиная с текущей версии ( 0.7.*
) DoctrineORMModule
, требуются следующие пакеты:
Что вы можете сделать, так это определение всех автозагружаемых пространств имен в init_autoloader.php
в приложении скелета (объяснение беспорядка). Код для замены – это часть об автозагрузчике:
Zend\Loader\AutoloaderFactory::factory(array( 'Zend\Loader\StandardAutoloader' => array( 'autoregister_zf' => true, 'namespaces' => array( 'Doctrine\Common' => __DIR__ . '/vendor/doctrine/common', 'Doctrine\DBAL' => __DIR__ . '/vendor/doctrine/dbal', 'Symfony\Console' => __DIR__ . '/vendor/symfony/console', 'DoctrineModule' => __DIR__ . '/vendor/doctrine/doctrine-module', 'DoctrineORMModule' => __DIR__ . '/vendor/doctrine/doctrine-orm-module', ), ), ));
Вам нужно будет настроить различные подмодули git самостоятельно
Начиная с версии 0.8.*
Из модулей зависимости будут увеличиваться совсем немного из-за того, что недавно была разделена doctrine/common
, поэтому подумайте о том, чтобы найти решение для начала использования композитора или вы просто задержите огромные проблемы в будущем.
Это решение должно работать до сих пор.
Попробуйте изменить следующий метод в модуле Module.php модуля Application:
public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 'Doctrine' => //Path where your doctrine dist resides ), ), ); }
Нет необходимости определять конфигурацию автозагрузки для DoctrineModule
и DoctrineORMModule
потому что это модули ZF2 и уже предоставляют конфигурацию автозагрузки.
Для аннотаций формы требуется Doctrine \ Common, которая содержит механизм парсинга аннотации. Самый простой способ установки Doctrine \ Common – использовать Composer; просто обновите свой composer.json и добавьте следующую строку в раздел require:
"doctrine / common": "> = 2.1", Затем запустите обновление php composer.phar, чтобы установить зависимость.
Если вы не используете Composer, посетите веб-сайт проекта Doctrine, чтобы узнать подробности об установке.