ZF2 + doctrine senza compositore

Ho un'applicazione ZF2 (scheletro) funzionante e voglio integrare Doctrine.

Ho scaricato i 2 moduli (DoctrineModule e DoctrineORMModule) da github in quanto non sono in grado di usare il compositore (quindi per favore non rispondere con "ottieni compositore").

Dopo ore di tentativi di trovare il problema continuo a ricevere il seguente errore:

Errore irreversibile: Classe "Doctrine \ Common \ Annotations \ AnnotationRegistry" non trovata in doctrine / DoctrineModule / src / DoctrineModule / Module.php alla row 54.

Ho passato ore a cercare e provare a eseguire il debug ma non riesco a trovare un modo per risolverlo. Mi aiuti per favore.

DoctrineORMModule non support esplicitamente il caricamento automatico senza compositore (poiché è un disastro).

A partire dalla versione corrente ( 0.7.* ) Di DoctrineORMModule , i pacchetti richiesti sono i seguenti:

  • doctrine / common (2.3.0)
  • doctrine / dbal (2.3.2)
  • symfony / console (v2.1.7)
  • doctrine / orm (2.3.2)
  • doctrine / doctrine-module (0.7. *)
  • doctrine / doctrine-orm-module (0.7.0)

Quello che puoi fare è definire tutti gli spazi dei nomi di autoloading in init_autoloader.php nella tua applicazione scheletro (che spiega il caos). Il codice da sostituire è la parte relativa alla fabbrica del caricatore automatico:

 Zend\Loader\AutoloaderFactory::factory(arrays( 'Zend\Loader\StandardAutoloader' => arrays( 'autoregister_zf' => true, 'namespaces' => arrays( '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', ), ), )); 

Dovrai configurare i vari sottomoduli git da solo

A partire dalla versione 0.8.* Dei moduli, le dependencies aumenteranno un po 'a causa di come la doctrine/common stata suddivisa di recente, quindi considera di trovare una soluzione per iniziare a usare il compositore o ritarderai enormi problemi in futuro.

Questa soluzione dovrebbe funzionare per ora.

Prova a modificare il seguente metodo nel Module.php del module Applicazione:

 public function getAutoloaderConfig() { return arrays( 'Zend\Loader\StandardAutoloader' => arrays( 'namespaces' => arrays( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 'Doctrine' => //Path where your doctrine dist resides ), ), ); } 

Non è necessario definire la configuration di caricamento automatico per DoctrineModule e DoctrineORMModule perché si tratta di moduli ZF2 e forniscono già la configuration di caricamento automatico.

Le annotazioni del module richiedono Doctrine \ Common, che contiene un motore di analisi delle annotazioni. Il modo più semplice per installare Doctrine \ Common è se stai usando Composer; semplicemente aggiorna il tuo compositore.json e aggiungi la seguente row alla sezione require:

"doctrine / common": "> = 2.1", quindi eseguire php compositer.phar per installare la dipendenza.

Se non stai utilizzando Composer, visita il sito Web del progetto Doctrine per ulteriori dettagli sull'installazione.