6

Zend Framework を使用して Web アプリケーションを作成しています。いくつかの推奨事項に基づいて、私は RDBM システムとして 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

上記は Zend application.ini の Doctrine 設定です。すべて正常に動作していますが、いくつかの理由から、CLI を使用せずにプロキシを手動で生成する方法を事前に知りたいと思っていました。まず第一に、Doctrine 2.0 のドキュメントでは、プロキシの自動生成がパフォーマンスの問題を引き起こすと述べています。第二に、Doctrine CLI の使用方法をまだ理解していません。特に、コマンド プロンプト アクセスなしでプロジェクト開発を共有サーバー ボックスに移動しました。

クラスを作成することにより、Doctrine エンティティを手動で生成してきました。Doctrine プロキシを同様に手動で生成するにはどうすればよいですか?

4

1 に答える 1

5

プロキシを生成する簡単な方法を見つけました:

    $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');
于 2012-05-08T22:02:08.270 に答える