2012-02-19 9 views
6

Web uygulaması oluşturmak için Zend Framework kullanıyorum. Çeşitli önerilere dayanarak, Doktrini RDBM sistemim olarak seçtim.Doctrine'de CLI olmadan el ile Proksileri nasıl oluşturulur?

;--------------------------------------------------- 
; 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 

Yukarıdaki, Zend application.ini dosyasındaki Doctrine yapılandırmamdır. Her şey yolunda gidiyor, ancak çeşitli nedenlerle CLI kullanmadan Proxy'leri manuel olarak nasıl oluşturacağınızı önceden bilmek istedim. Her şeyden önce, Doctrine 2.0 belgesi otomatik üreten Proxy'lerin performans sorunlarına neden olacağından bahseder. İkincisi, hala DOctrine CLI'yi nasıl kullanacağımı henüz anlamadım, özellikle de proje geliştirmeyi komut istemi erişimi olmadan paylaşılan bir sunucu kutusuna taşıdım.

Sınıfları oluşturarak Doktrin varlıkları elle oluşturuluyor. Benzer şekilde doktrin proxy'lerini nasıl el ile oluştururum?

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

kişiler kullanmak oluşturmak için:

cevap

4

Ben vekiller oluşturmak için kolay bir yol buldum

Biz varlıkları Kodunuzla ($ metadatalar hat) Ancak üçüncü bir çizgi var
$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

bize hata veriyor: Yakalanmamış istisna 'Doctrine \ ORM \ Mapping \ MappingException' mesajıyla 'Dosya haritalama sürücüleri geçerli bir dizin yoluna sahip olmalı, ancak verilen yol yanlış görünüyor!' C: \ Zend \ Apache2 \ htdocs \ Webate \ library \ Doctrine \ ORM \ Mapping \ MappingException.php: 193 – Furyvore

+0

EntityManager'da proxy yolunu ayarlamanız gerekiyor, burada eski projemden kod: '$ config = new \ Doctrine \ orm \ konfigürasyonu; \t \t $ config-> setMetadataCacheImpl (self :: getCache()); \t \t $ config-> setMetadataDriverImpl (new \ 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 ($ bağlantı, $ config); ' –

İlgili konular