Учение ZF2 + без композитора

У меня есть работающее приложение ZF2 (скелет) и вы хотите интегрировать Doctrine.

Я загрузил 2 модуля (DoctrineModule и DoctrineORMModule) из github, поскольку я не могу использовать композитор (так что, пожалуйста, не отвечайте, «получите композитор»).

После нескольких часов попыток найти проблему я продолжаю получать следующую ошибку:

Неустранимая ошибка: класс «Доктрина \ Общие \ Аннотации \ AnnotationRegistry» не найдена в доктрине / DoctrineModule / src / DoctrineModule / Module.php в строке 54.

Я трачу часы на поиск и пытается отлаживать, но я не могу найти способ исправить это. Пожалуйста, помогите мне.

Solutions Collecting From Web of "Учение ZF2 + без композитора"

DoctrineORMModule явно не поддерживает автоматическую загрузку без композитора (поскольку это беспорядок).

Начиная с текущей версии ( 0.7.* ) DoctrineORMModule , требуются следующие пакеты:

  • доктрина / общая (2.3.0)
  • doctrine / dbal (2.3.2)
  • symfony / console (v2.1.7)
  • доктрина / орм (2.3.2)
  • доктрина / доктрина-модуль (0.7. *)
  • doctrine / doctrine-orm-module (0.7.0)

Что вы можете сделать, так это определение всех автозагружаемых пространств имен в 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, чтобы узнать подробности об установке.