DB_DataObject や自動生成されるクラスや定義を使用する前に設定する必要があります。 DB_DataObject の最も簡単な設定法は、 ini ファイルを使用することです (しかしながら、PEAR::Config クラスや独自の設定システムを検討する方を好むかも知れません) 。
例 39-1これは、DB_DataObject の典型的な設定ファイルです
|
DB_DataObject (あるいは、このようなオプションを使用する他のクラス) でこの設定ファイルを使用します。
例 39-2デフォルトオプションの設定
|
データベースに接続するためのデフォルトの DSN を指定します。
DB_DataObject のデータベーススキーマファイルがストアされるディレクトリを 指定します。
DB_DataObject は、データベースの詳細 (表やカラム) をこのディレクトリにある ini ファイルにストアします。 この情報は、SQL の組み立ての際、 カラムが文字列型でクオートが必要かどうか、 あるいは数値型 (かつ、チェックされる) かどうかを決定するのに使用されます。一般的には継承した DataObject クラスと同じディレクトリにスキーマをストアします。
デフォルトの取り込みパス (include path) への絶対パス、 あるいは相対パスを指定します。 ここには、拡張したクラスが格納されています。
これは、クラスの自動読み込みのために staticGet() メソッドと getLinks() メソッドによって使用されます。
生成された全てのクラスは、 {class_prefix}ucfirst($table_name) と命名されます。 接頭辞を変更するためにこれを使用してください。 これは、staticGet() と getLinks() によって使用されます。
キー定義ファイルを無効とし、表のキーを特定のキーにハードコードするために使用します。 通常、 構成上正しく問い合わせることができないデータベースで使用します。
例 39-3person 表でキーにログイン情報を使用する
|
自動的にシーケンスで埋めるために PEAR の nextval() を使用したくない場合、"ALL" あるいはテーブルのリスト "person,cart,group" とすることで無効にすることができます。
デフォルトのデバッグレベルを指定します (デフォルト 0=off、1= 基本的な SQL ロギング、 2=結果ロギング、3=全て) 。
デフォルトは FALSE 。 セットされた場合、データベースの更新は無効になります。
デフォルトは FALSE 。 dataobjects の通常の振る舞いは、 致命的エラーが発生したり、データベースとの接続に失敗する、 あるいはメソッドに無効なオブジェクト型を渡した場合、 PEAR_ERROR_DIE (たとえば、PHP を終了する) となります。 しかし、サーバを生かしておく必要がある場合、 TRUE をセットしてエラーをキャッチし、PEAR エラーハンドラを定義 することで、 'すみません、ただいまメンテナンスのため停止しています' といった親切なメッセージ画面を表示させることができます。
SQL 文中の識別子のクオーテーションを強制する場合、 1 をセットします。
例 39-4quote_identifiers がある場合とない場合の生成されたステートメント
|
注意: これは、 whereAdd() や orderBy()、そして and groupBy() といったメソッドに送るデータには影響を及ぼしません。 これらのメソッドは生のデータをそのまま受け取ることを想定しています。
クラスや ini クラスの生成を手動でコード生成しなくても オンザフライで行うことが可能になります (現時点でサポートされている値は "full" だけで、 スキーマデータとファクトリを使用する際のデフォルトのクラスを 生成します) 。
複数のデータベースがある場合、それぞれのデータベースの DSN を特定するために database_* を使用することができます。
例 39-5複数のデータベースを使用する - データベースのパスワード
|
複数のデータベースがある場合、 個々の表を異なるデータベースにマップするために table_* を使用することができます。 たとえは、次のような感じです。
例 39-6複数のデータベースを使用する - 表のセッティング
|
クラスを拡張した DataObject を配置するディレクトリを指定します。
クラスの定義の更新/生成の際、 自動クラスビルダによって使用されます。
基底クラスの名前 (通常、DB_DataObject) を指定します。
全てのクラスに有用なメソッドの共通レイヤーを追加したい場合、 extends_location と extends に別のクラスを指定することができます。 デフォルトは 'DB_DataObject' です。
The Directory where your Base Class (usually 基底クラス (通常は、DB_DataObject) を配置するディレクトリを指定します。
全てのクラスに有用なメソッドの共通レイヤーを追加したい場合、 extends_location と extends に別のクラスを指定することができます。 デフォルトは 'DB/DataObject.php' です。
データベースからクラスを再生成するとき、 通常、変数や staticGet などのみが更新されますが、 これをセットすることで拡張フィールドも更新されるようになります。
Postgres (といくつかの他のもの) で通常のテーブルのように ビューを処理できるようにするかを指定します (たとえば、挿入/更新/削除などがビューでも動作します) 。 データベースの全てのビューに対してファイルを生成するために、 このオプションを使用することができます。
注意: 生成されたクラスで手動でキーを指定する必要があります。 (たとえば、メソッド keys() と sequenceKey() を定義する場合です。 何をキーにすればよいかをビルダは推測することはできません) 。
もし特定のテーブルに対してクラスと ini エントリだけをを生成したい 場合に正規表現を指定します。これにより、 名前が正規表現にマッチするテーブルのみ生成されます。 例えば、 /mytables_.*/ です。
もし特定のテーブルに対してクラスと ini エントリだけを を生成したくない場合に正規表現を指定します。これにより、 名前が正規表現にマッチするテーブルのみ生成されません。 例えば、 /private_tables_.*/ です。
PostgreSQL のスキーマの概念は少し変わっていて、 テーブル名の先頭にスキーマ名が付加されるようになっています。 クラスやスキーマの生成の際に、この仕様は邪魔になります。 これを 1 に設定すると、テーブル名からスキーマを取り除きます。
もし True ならば、カラムのためのプライベート あるいは変数定義を出力しませんので、get/set メソッドを オーバーロードすることができるようになります。
もし True ならば、検証メソッドのためのスタブを追加します。