Как сгенерировать прокси вручную без CLI в Doctrine? - PullRequest
6 голосов
/ 20 февраля 2012

Я использую Zend Framework для создания веб-приложения.Основываясь на нескольких рекомендациях, я выбрал Doctrine в качестве своей системы RDBM.

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

Выше мой конфиг Doctrine в приложении Zend application.ini.Все работает нормально, но я хотел знать заранее, как генерировать прокси вручную без использования CLI по нескольким причинам.Прежде всего, в документе Doctrine 2.0 упоминается, что автоматическая генерация прокси-серверов вызовет проблемы с производительностью.Во-вторых, я до сих пор не понял, как использовать Doctrine CLI, тем более, что я перенес разработку своего проекта в общий сервер без доступа из командной строки.

Я создавал сущности Doctrine вручную, создавая классы.Как вручную сгенерировать прокси Doctrine?

1 Ответ

4 голосов
/ 09 мая 2012

Я нашел простой способ создания прокси:

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

для создания сущностей используйте:

    $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');
...