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