SOHOゆいちのサイト
Zend_Dbのfactoryクラスはアダプタやコンフィグ配列を引数にとってデータベースの接続を生成してくれます。
実際のコードで、毎回コンフィグ配列を渡すのも手間なので、INIファイルの設定から接続を生成してregistryに保持して管理してくれるfactoryメソッドを作成してみました。
あらかじめZend_Config_Iniを使ってINIファイルを読み込んでおいて、そのINIの内容を利用するようにします。
[database]
; DB接続情報
database.mainDb.type = pdo_pgsql
database.mainDb.host = localhost
database.mainDb.username = hoge
database.mainDb.password = hoge
database.mainDb.dbname = hoge
$appDatabaseConfig = new Ashe_Config_Ini([INIファイル], ‘database’);Zend_Registry::set( ‘database_config’, $appDatabaseConfig);
class Cshe_Db extends Zend_Db{static public function factory( $registName = ‘mainDb’){try {Zend_Loader::loadClass( ‘Zend_Registry’ );if ( !Zend_Registry::isRegistered( $registName ) ) {$appDatabaseConfig = Zend_Registry::get( ‘database_config’);// DB関連設定取得$config = $appDatabaseConfig->toArray();$adapterName = $config['database'][$registName]['type'];unset( $config['database'][$registName]['type']);$db = parent::factory( $adapterName, $config['database'][$registName]);Zend_Registry::set( $registName, $db);} else {$db = Zend_Registry::get( $registName);}return $db;}catch( Exception $e) {throw $e;}}}
$db =Cshe_Db::factory();
www.bshe.org (created by itassist.info)