奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

自作フレームワーク:db_manager.php

注意:
本プログラムは、
いわゆる徳丸本に書かれているセキュリティ対策の多くは反映してます。
しかし、高難易度の攻撃に耐えられる程の対策は出来ていないと思います。
本プログラムの流用は自由ですが、流用によって生じた損害については、
自己責任でお願いしてますので、その旨ご了承下さい。

自作フレームワークのトップページに戻る



<?php

/**
* DBハンドル管理クラス
*
* 使用するDBによってDBハンドルを切り替える
*
* @access public
* @create 2010/08/12
* @version 1.0
*/
class db_manager
{

/**
* DBハンドルの取得を行う
*
* @access public
* @param config $config 設定ファイルクラスインスタンス
* @return db_handle DBハンドルクラスインスタンス
*/
static public function get_handle($config)
{
// DBハンドルクラスインスタンス
$dbh = null;

// DBMSの検索
$dbms = $config->search('db_type');

if (0 === strcmp('mysql', $dbms))
{
// MySQL
require_once('dbh_mysql.php');
$dbh = new dbh_mysql();
}
else if (0 === strcmp('postgresql', $dbms))
{
// PostgreSQL
require_once('dbh_postgresql.php');
$dbh = new dbh_postgresql();
}
else
{
throw new custom_exception('DBが見つかりませんでした', 1);
}

// 設定
$dbh->set_config($config);
$dbh->set_user_name($config->search('db_user'));
$dbh->set_password($config->search('db_password'));
$dbh->set_database_name($config->search('db_name'));
$dbh->set_host_name($config->search('db_host_name'));
$dbh->set_port_number($config->search('db_port_number'));

// DB接続
if (false === $dbh->connect())
{
// 接続失敗
throw new custom_exception($dbh->get_error_message(), 1);
}

// パスワード情報の消去
$dbh->set_password('?');

return $dbh;
}
}