マルチコンポーネントデータモデル
バージョン1.2に関してPropelはPropelをパッケージ化もしくはモジュール化されたアプリケーションにより簡単に統合するパッケージング機能を伴っています。
(これは実験であることにどうぞご注意下さい。テストとフィードバックをして下されば安定化のための手助けになります: Support)
前提条件
SVNからPropelジェネレータパッケージの現在の開発バージョンをインストールする必要がある場合、trunk/generator/にあるリポジトリからチェックアウトします(どのように行うのかはSVNをご覧下さい)。
スキーマファイル
望む数だけschema.xmlファイルを使うことが出来ます。おそらくパッケージごとに一つのスキーマが欲しいでしょう。スキーマファイルは(*.)schema.xmlと名付けなければなりません、すなわち、schema.xml、package1.schema.xml、 core.package1.schema.xmlといった名前はすべて受け入れられます。これらのファイルはプロジェクトディレクトリに設置しなければなりません。
パッケージ化されたbookstoreの例では、次のスキーマが見つかります:
- author.schema.xml
- book.schema.xml
- club.schema.xml
- media.schema.xml
- publisher.schema.xml
- review.schema.xml
- log.schema.xml
それぞれのスキーマファイルはpackage属性をこのスキーマファイル/データベースに所属するすべてのテーブルにpackage名に設定するデータベースタグを含まなければなりません。
例えば、パッケージ化されたbookstoreの例において、author.schema.xmlは次のデータベースタグを含みます:
<database package="core.author" name="bookstore" [...]>
このことはAuthor OMクラスはビルド出力ディレクトリのcore/author/サブディレクトリに作成されることを意味します。
一つのパッケージに所属するスキーマファイルを複数持つことが出来ます。例えば、パッケージ化されたbookstoreの例ではbook.schema.xmlとmedia.schema.xmlの両方が同じ"core.book"パッケージに所属します。
packageObjectModelビルドプロパティ
我々はパッケージ化のビルドプロセスを有効にするpropel.packageObjectModelビルドプロパティを考案しました。
これをオンに切り替えるために、次の行をプロジェクトディレクトリにあるbuild.propertiesファイルに追加します:
propel.packageObjectModel = true
OMビルド
パッケージ化されたbookstoreのビルドを実行するためにPropel/generator/ディレクトリに移動して次のコマンドを入力します:
phing -Dproject=bookstore-packaged
エラー無しでこれが実行されたら、projects/bookstore-packaged/build/classesディレクトリを見てみると次のディレクトリツリーが作成されています:
addon/
club/
BookClubList.php
BookClubListPeer.php
BookListRel.php
BookListRelPeer.php
core/
author/
Author.php
AuthorPeer.php
book/
Book.php
BookPeer.php
Media.php
MediaPeer.php
publisher/
Publisher.php
PublisherPeer.php
review/
Review.php
ReviewPeer.php
util/
log/
BookstoreLog.php
BookstoreLogPeer.php
(明瞭にするために追加のmap/とom/サブディレクトリのそれぞれのディレクトリに出力されます。)
さらにpropel.output.dir ビルドプロパティを変更することでPropelが作成したファイルを設置する場所を微調整することが出来ます。デフォルトではプロパティは次のように設定されます:
propel.output.dir = ${propel.home}/projects/${propel.project}/build
ビルドディレクトリとして他のディレクトリを使用するように変更することが出来ます。
SQLビルド
パッケージ化されたbookstoreビルドの実行を成功してbuild/sql/ディレクトリを見てみると、それぞれのパッケージ(スキーマファイルデータベースタグでpackage属性として指定されます)ごとに一つのsqlファイルが生成されていることを見ることになります:
- addon.club.schema.sql
- core.author.schema.sql
- core.book.schema.sql
- core.publisher.schema.sql
- core.review.schema.sql
- util.log.schema.sql
これらのファイルはそれぞれのパッケージに必要なCREATE TABLE SQL命令文を含みます。
次のコマンドを入力することでinsert-sqlタスクを実行します:
phing -Dproject=bookstore-packaged insert-sql
これらのSQL命令文はPropel/generator/test/ディレクトリに設置されたSQLiteデータベース上で実行されます。
テストファイルを実行する
生成されたOMクラスをテストするために、それらをテストしたいと思います。
cd test php bookstore-packaged-test.php
OMクラスのもっとも重要な機能のためにこれはテストのシリーズを実行しエラー無しで動作します。
フィードバック
何かが見つからないもしくはエラーや予期しない挙動がありましたら、私達に連絡して下さるようお願いします:
