This project is no longer maintained and has been archived. |
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
NOTE 上記の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');
NOTE 異なる場所からエクステンションを登録する必要がある場合、
registerExtension()
メソッドの2番目の引数でエクステンションディレクトリへのフルパスを指定します。