把PHP的 mysql 和 mysqli 封装一下, 然后加个静态化的单件模式就是 阳春白雪的 MagicDB.

在Driver是 ‘mysql’ 的情况下, 内部自动判断可用的 extension, 然后建立连接, 操作和PDO相同哦! 顺序 PDO、mysqli、mysql. 如果PDO可用,则优先使用PDO作为数据库驱动.

示例:

 1 <?php
 2 /**
 3  * 测试 DB, 激动人心的时刻
 4  *     使用全局变量的方式存储配置信息不是很好, but now 我们既来之则安之.
 5  *
 6  * @filesource testDB.php
 7  * @package MagicDB
 8  * @subpackage test
 9  * @version $id: 0.1, utf8, Wed Dec 23 11:45:29 CST 2009
10  * @author LD King <kldscs[at]gmail.com>
11  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
12  * @link http://mifunny.info/
13  * @example
14  *  
15  */
16
17 require_once ’../DB.class.php;
18 $_config['MagicDB'] = array(
19     ’driver‘ => ’mysql‘,  //数据库驱动, 参看 http://www.php.net/manual/en/pdo.drivers.php
20     ’dsn‘ => ’mysql:dbname=test;host=127.0.0.1;port=3306‘,
21     ’username‘ => ’test‘, 
22     ’password‘ => ”,
23     ’charset‘ => ’utf8‘,
24     ’collate‘ => ’utf8_general_ci‘,
25     ’persistent‘ => false,  //是否使用长连接
26     );
27 if( extension_loaded(pdo_mysql) ){
28     $_config['MagicDB']['options'] = array(
29             PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
30         ); //额外选项
31 }
32
33
34 $query = ’select * from test222;
35
36 //得到数据库对像事例;
37 $db = DB::getInstance()->db;
38 $re = $db->query($query);
39 var_dump( $re->fetchAll() );
40
41 // 更简单的方法
42 var_export( DB::getOne($query) );  //输出第一行信息(一维数组)
43 var_export( DB::getAll($query) );  //数出所有信息(多维数组)
44
45 ?>

源码地址: http://dscache.googlecode.com/svn/trunk/MagicDB/

接下来干什么呢? Smarty 实在过巨,要不写个简单的模板引擎~~ 有搞头