2012-02-19 9 views
6

Estoy usando Zend Framework para crear una aplicación web. Basado en varias recomendaciones, elegí Doctrine como mi sistema RDBM.¿Cómo generar Proxy manualmente sin CLI en 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 

Lo anterior es mi configuración de Doctrine en Zend application.ini. Todo está funcionando bien, pero quería saber de antemano cómo generar Proxy manualmente sin usar la CLI por varias razones. En primer lugar, Doctrine 2.0 doc menciona que la generación automática de Proxies causará problemas de rendimiento. En segundo lugar, todavía no he descubierto cómo usar la CLI de Doctrine, especialmente porque he movido el desarrollo de mi proyecto a un cuadro de servidor compartido sin acceso a la línea de comandos.

he estado generando entidades Doctrina de forma manual mediante la creación de las clases. ¿Cómo genero proxys de Doctrine de manera similar?

Respuesta

4

que he encontrado manera fácil de generar proxies:

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

para generar entidades utilizan:

$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

Tenemos entidades, sin embargo, la tercera línea del código (el meta-datos de línea $) nos está dando errores: excepción no detectada 'Doctrine \ ORM \ Mapping \ MappingException' con mensaje 'Los controladores de asignación de archivos deben tener una ruta de directorio válida, ¡pero la ruta dada parece ser incorrecta!' en C: \ Zend \ Apache2 \ htdocs \ Webate \ biblioteca \ Doctrine \ ORM \ Mapping \ MappingException.php: 193 – Furyvore

+0

u necesidad de establecer la ruta proxy en EntityManager, aquí el código de mi viejo proyecto: '$ config = new \ Doctrina \ ORM \ Configuración; \t \t $ config-> setMetadataCacheImpl (self :: getCache()); \t \t $ config-> setMetadataDriverImpl (nueva \ Qweb \ driver \ DoctrineYml (QWEB_MODULE)); \t \t $ config-> setEntityNamespaces (array ('base')); \t \t $ config-> setProxyDir (DOCTRINE_PROXIES); \t \t $ config-> setProxyNamespace ('proxy'); \t \t conexión $ = \ Doctrina \ DBAL \ DriverManager :: getConnection (self :: loadYml (QWEB_CONFIG.DIRECTORY_SEPARATOR.'databases.yml ')); \t \t $ em = \ Doctrine \ ORM \ EntityManager :: create (conexión $, $ config); ' –

Cuestiones relacionadas