2011-07-18 10 views
2

私はDoctrine 2の新機能で、注釈を使用してデータベースのマッピングを行っています。私は少し物事をもう少し持ち、いくつかのカスタム注釈を使用したいと思います。その目的は、アノテーションによって作成された設定を含むフォームなどを作成できるようにすることです。私はアノテーションを読むのに問題があります。@Tableなどのクラスのものでもパーサーから返されていません。Doctrine 2の使用注釈リーダーをカスタマイズした注釈の場合

私はCodeigniter 2とModular Extensionsを使用しています。私のコントローラでは、私は持っています:

$reader = new \Doctrine\Common\Annotations\AnnotationReader(); 
$reader->setDefaultAnnotationNamespace('MyCompany\Annotations'); 
$reflClass = new ReflectionClass('models\User'); 
$classAnnotations = $reader->getClassAnnotations($reflClass); 
print_r($classAnnotations); 

空の配列を返します。

私はその後、私のライブラリ/注釈フォルダ内のファイルを持っている

、Bar.php:

namespace MyCompany\Annotations; 

class Bar extends \Doctrine\Common\Annotations\Annotation 
{ 
    public $foo; 
} 

そして最後に、私のユーザモデル:私はこの例に従うことをしようとしています

/** 
* @Entity 
* @Table(name="user") 
* @MyCompany\Annotations\Bar(foo="bar") 
* @MyCompany\Annotations\Foo(bar="foo") 
*/ 

class User { 

} 

http://www.doctrine-project.org/projects/common/2.0/docs/reference/annotations/en#setup-and-configuration

ご協力いただきありがとうございます。

マーク。

+0

どのバージョンのDoctrineを使用していますか、2.0または2.1ですか? –

+0

私はDoctrine 2.0を使用しています – koosa

+0

それを実証しました。スーパーシンプル - 注釈を使用したい場合は、私の場合はコントローラファイルに、クラスファイルを手動で含める必要があります – koosa

答えて

0

あなたが理解したように、カスタム注釈ファイル/クラスを使用する前にそれを含める必要があります。

あなたのコントローラーにそれらを含めても問題はありませんが、ドクトリンの方法ではどうですか。

Doctrine2のORMには、Doctrine/ORM/Mapping/Driver/フォルダにDoctrineAnnotations.phpというファイルがあります。それは次のようになります。だから、

... 
require_once __DIR__.'/../GeneratedValue.php'; 
require_once __DIR__.'/../Version.php'; 
require_once __DIR__.'/../JoinColumn.php'; 
require_once __DIR__.'/../JoinColumns.php'; 
require_once __DIR__.'/../Column.php'; 
... 

、私は自分のライブラリーに類似したファイルを作成し、この「ドライバ」を含むことで、私の注釈を読み込むされ行ってきた(例えば、あなたのブートストラップでは。)。私のZFベースのアプリで

Guilherme Blanco's fabulous Zf1-D2 set-upを使用して)、私は(すべて1行に)このように、私の application.iniに私の "注釈ドライバ" を追加しました:

resources.doctrine.orm.entityManagers.default 
    .metadataDrivers.annotationRegistry.annotationFiles[] 
    = APPLICATION_PATH "/path/to/my/library/ORM/Mapping/Driver/MyAnnotations.php" 
2

使用

Doctrine\Common\Annotations\AnnotationRegistry 

AnnotationRegistry::RegisterLoader($universalClassLoader); 
AnnotationRegistry::RegisterFile(__DIR__ . ' PATH_TO_DoctrineAnnotations.php '); 
関連する問題