2012-02-19 10 views
6

Utilizzo Zend Framework per creare un'applicazione Web. Sulla base di diversi consigli, ho scelto Doctrine come sistema RDBM.Come generare proxy manualmente senza CLI in Doctrine?

;--------------------------------------------------- 
; DOCTRINE CONFIGURATION 
;--------------------------------------------------- 
resources.entityManager.connection.driver = "pdo_mysql" 
resources.entityManager.connection.host = "localhost" 
resources.entityManager.connection.dbname = "private" 
resources.entityManager.connection.user = "private" 
resources.entityManager.connection.password = "private" 
resources.entityManager.connection.entities = APPLICATION_PATH "/models" 
resources.entityManager.connection.proxies.location = APPLICATION_PATH "/models/Proxies" 
resources.entityManager.connection.proxies.ns = "Proxies" 

; According to Doctrine manual, this should be true for 
; development, and false for production 
resources.entityManager.connection.proxies.generate = true 

Quanto sopra è la mia configurazione di Doctrine in Zend application.ini. Tutto funziona bene, ma volevo sapere in anticipo come generare proxy manualmente senza utilizzare la CLI per diversi motivi. Prima di tutto, il documento Doctrine 2.0 menziona che i proxy auto-generanti causeranno problemi di prestazioni. In secondo luogo, non ho ancora capito come utilizzare la CLI di Doctrine, in particolare perché ho spostato lo sviluppo del mio progetto su un server condiviso senza accesso al prompt dei comandi.

Ho generato manualmente le entità Doctrine creando le classi. Come faccio a generare manualmente proxy Doctrine allo stesso modo?

risposta

4

ho trovato modo semplice per generare proxy:

$proxyDir = null; //to genearate to default proxy dir 
    $proxyFactory = $em->getProxyFactory(); 
    $metadatas = $em->getMetadataFactory()->getAllMetadata(); 
    $proxyFactory->generateProxyClasses($metadatas, $proxyDir); 

per generare entità usare:

$classes = $em->getClassMetadataFactory()->getAllMetadata(); 
    $generator = new \Doctrine\ORM\Tools\EntityGenerator(); 
    $generator->setGenerateAnnotations(true); 
    $generator->setGenerateStubMethods(true); 
    $generator->setRegenerateEntityIfExists(false); 
    $generator->setUpdateEntityIfExists(true); 
    $generator->generate($classes, '/path/to/generate/entities'); 
+0

Abbiamo entità, tuttavia la terza riga del codice (la linea metadatas $) ci sta dando errori: eccezione non rilevata 'Doctrine \ ORM \ Mapping \ MappingException' con messaggio 'I driver di mappatura dei file devono avere un percorso di directory valido, tuttavia il percorso indicato sembra non essere corretto!' in C: \ Zend \ Apache2 \ htdocs \ Webate \ library \ Doctrine \ ORM \ Mapping \ MappingException.php: 193 – Furyvore

+0

u è necessario impostare il percorso proxy in EntityManager, qui codice dal mio vecchio progetto: '$ config = new \ Doctrine \ ORM \ Configuration; \t \t $ config-> setMetadataCacheImpl (self :: getCache()); \t \t $ config-> setMetadataDriverImpl (nuovo \ qweb \ driver \ DoctrineYml (QWEB_MODULE)); \t \t $ config-> setEntityNamespaces (array ('base')); \t \t $ config-> setProxyDir (DOCTRINE_PROXIES); \t \t $ config-> setProxyNamespace ('proxy'); \t \t $ connection = \ Doctrine \ DBAL \ DriverManager :: getConnection (self :: loadYml (QWEB_CONFIG.DIRECTORY_SEPARATOR.'databases.yml ')); \t \t $ em = \ Doctrine \ ORM \ EntityManager :: create ($ connessione, $ config); ' –

Problemi correlati