自己写的一个比较简洁直观的数据库工厂连接类,结合了单例模式和工厂模式
这样查询数据正常,但是不知道合理不?final class db_factory {
private static $instance;
protected $db;
/**
* 返回数据库连接类对象的实例
* @return object
*/
public static function get_instance($database = '') {
if (!isset(self::$instance)) {
self::$instance = new self();
if ($databse == '') {
$database = $GLOBALS['database'];
}
$object = null;
switch($database['type']) {
case 'mysql' :
require_once 'mysql.class.php';
$object = new mysql();
break;
case 'mysqli' :
require_once 'mysqli.class.php';
$object = new mysqli();
break;
default :
require_once 'mysql.class.php';
$object = new mysql();
}
$object->open($database);
self::$instance->db = $object;
}
return self::$instance->db;
}
}调用的时候这样 $db = db_factory::get_instance();
这样查询数据正常,但是不知道合理不?final class db_factory {
private static $instance;
protected $db;
/**
* 返回数据库连接类对象的实例
* @return object
*/
public static function get_instance($database = '') {
if (!isset(self::$instance)) {
self::$instance = new self();
if ($databse == '') {
$database = $GLOBALS['database'];
}
$object = null;
switch($database['type']) {
case 'mysql' :
require_once 'mysql.class.php';
$object = new mysql();
break;
case 'mysqli' :
require_once 'mysqli.class.php';
$object = new mysqli();
break;
default :
require_once 'mysql.class.php';
$object = new mysql();
}
$object->open($database);
self::$instance->db = $object;
}
return self::$instance->db;
}
}调用的时候这样 $db = db_factory::get_instance();
$object = new $database['type']();
switch($database['type']) {
case 'mysql' :
require_once 'mysql.class.php';
$object = new mysql();
break;
case 'mysqli' :
require_once 'mysqli.class.php';
$object = new mysqli();
break;
default :
require_once 'mysql.class.php';
$object = new mysql();
}
$object->open($database);
self::$instance->db = $object;
} 工具类里不应该有switch的,而应该是根据传入的参数动态调用所需要的数据库类,可以考虑使用XML配置文件映射参数和对应的数据库访问类名来完成这个功能