You are currently reading the 1.2 documentation. Switch to 2.2  2.1  2.0 

Extensions

Doctrineエクステンションは任意のプロジェクトに入れて有効にできる再利用可能なDoctrineエクステンションを作成する方法です。エクステンションはコードの命名や、オートロードなどDoctrineの標準に従う単なるコードです。

エクステンションを使うには最初にどこにエクステンションがあるのかDoctrineにわかるように設定しなければなりません:

Doctrine_Core::setExtensionsPath('/path/to/extensions');

SVNから既存のエクステンションをチェックアウトしてみましょう。ソートの上げ下げを提供するモデルのビヘイビアを搭載するSortableエクステンションを見てみましょう。

$ svn co http://svn.doctrine-project.org/extensions/Sortable/branches/1.2-1.0/ /path/to/extensions/Sortable

/path/to/extensions/Sortableを見てみると次のようなディレクトリ構造を見ることになります:

Sortable/
  lib/
    Doctrine/
      Template/
        Listener/
          Sortable.php
        Sortable.php
  tests/
    run.php
    Template/
      SortableTestCase.php

このエクステンションがあなたのマシンで動くことを確認するためにエクステンションのテストスイートを実行します。必要なのはDOCTRINE_DIR環境変数をセットすることです。

$ export DOCTRINE_DIR=/path/to/doctrine

上記のDoctrineへのパスはlibフォルダーではなくメインフォルダーへのパスでなければなりません。テストを実行するにはDoctrineを含めたtestsディレクトリにアクセスできなければなりません。

Sortableエクステンションのテストを実行することが可能です:

$ cd /path/to/extensions/Sortable/tests
$ php run.php

次のようなテストが成功したことを示すテストの出力が表示されます:

Doctrine Unit Tests
===================
Doctrine_Template_Sortable_TestCase.............................................passed

Tested: 1 test cases.
Successes: 26 passes.
Failures: 0 fails.
Number of new Failures: 0
Number of fixed Failures: 0

Tests ran in 1 seconds and used 13024.9414062 KB of memory

プロジェクトでエクステンションを使いたい場合Doctrineでエクステンションを登録しエクステンションのオートロードメカニズムをセットアップする必要があります。

最初にエクステンションのオートロードをセットアップしましょう。

// bootstrap.php

// ...
spl_autoload_register(array('Doctrine', 'extensionsAutoload'));

これでエクステンションを登録したのでエクステンション内部のクラスがオートロードされます。

$manager->registerExtension('Sortable');

異なる場所からエクステンションを登録する必要がある場合、registerExtension()メソッドの2番目の引数でエクステンションディレクトリへのフルパスを指定します。


Questions and Feedback

If you find a problem with the documentation or have a suggestion, please register and open a ticket.

If you need support or have a technical question, you can post to the user mailing-list.