設定オプション
設定オプション –
データベースアクセスのためのデフォルト値の設定
設定
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
-
キー定義ファイルを無効とし、表のキーを特定のキーにハードコードするために使用します。
通常、
構成上正しく問い合わせることができないデータベースで使用します。
-
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 ならば、検証メソッドのためのスタブを追加します。