設定オプション

設定オプション – データベースアクセスのためのデフォルト値の設定

設定

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 ならば、検証メソッドのためのスタブを追加します。

DB_DataObject で何ができるか (Previous) 基底クラスの生成とデータベーススキーマ (Next)
Last updated: Mon, 21 Apr 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: madsliejensen
In newer versions, somewhere around 1.9.0 i think, generate_links will also work for postgresql!
Note by: madsliejensen
There is an option 'generate_links' which will read foreign keys and add those to the links.ini-file.

However, this currently only works with mysql/mysqli.
Note by: madsliejensen
As of 1.9.0, the factory()-method can check several directories when autoloading dataobjects:

// support for:
// class_location = mydir/ => maps to mydir/Tablename.php
// class_location = mydir/myfile_%s.php => maps to mydir/myfile_Tablename
// with directory sepr
// class_location = mydir/:mydir2/: => tries all of thes locations.
Note by: Mike
If you are having problem making this work and are suspecting that
DataObject is not reading or getting the configuration variables that you are feeding it. try setting them like this

$_DB_DATAOBJECT['CONFIG']['database'] = "mysql://user:password@localhost/db";
$_DB_DATAOBJECT['CONFIG']['schema_location'] = "/var/www/html/mydir";
$_DB_DATAOBJECT['CONFIG']['class_location'] = "/var/www/html/mydir";
$_DB_DATAOBJECT['CONFIG']['db_driver'] = "MDB2";
$_DB_DATAOBJECT['CONFIG']['quote_identifiers'] = true;

This is the only way that I was able to get DataObject to work.
It would not read the variables in an ini file or set them using the
PEAR::setstaticproperty() function.
Note by: zac.konopa@gmail.com
fyi - if you are using the include or exclude regex in an .ini file wrap your regex in double quotes. I found that if I was trying to match table 'users' using '/users/' it choked but "/users/" worked fine.
Note by: pierre2543@hotmail.com
The option db_driver can be used to specify the database driver to use. By default it uses the DB package. You can force DB_DataObject to use MDB2 by adding the following to your configuration:

db_driver=MDB2

LPC