Using the Asf_Db class PHP supports pdo drivers, 当前封装三种数据库(MySQL、SQLite、PostgreSQL)CURD
这是一个超级轻量级的DB API封装, 简化DB操作
DB类使用PHP魔术方法(__callStatic)去调用Asf_Db_AbstractAdapter类封装的所有方法
采用单例模式连接数据库
如果框架未封装的方法, 会去查找PDO原生封装方法
在开启命名空间情况下(asf.use_namespace=1)类名为 Asf\Db
<?php final class Asf_Db { public static boolean function init(array $configs [, int $adapter_id = 0 [, bool $reset = false]]) public static boolean function initMysql(array $configs [, bool $reset = false]) public static mixed function __callStatic(string $function_name, array $args) public static array function getLinks(void) public static Asf_Db_QueryBuilder_Select function QBS(void) public static Asf_Db_QueryBuilder_Insert function QBI([bool $ignore = false]) public static Asf_Db_QueryBuilder_Update function QBU(void) public static Asf_Db_QueryBuilder_Delete function QBD(void) }
StorageRule class on path: asf.root_path/library/Storagerule.php
<?php use Asf\Db; class StorageRule { static public function getStorageRule($table, $db_type = 'slave') {/*{{{*/ $configs = array( 'dsn' => array('host' => '127.0.0.1', 'dbname' => 'test', 'port' => 6666), 'username' => 'test', 'password' => 'AbcdefRDvgedf', ); $db['master'] = $configs; $db['slave'] = $configs; Db::init($db[$db_type]); Db::setTable($table); }/*}}}*/ } class IndexDao {/*{{{*/ public function init($db_type) { StorageRule::getStorageRule('test1', $db_type); } public function test() { $this->init('master'); $data = array('user' => 'lisi-2', 'pass' => '1234567'); var_dump(Db::insert($data)); } }/*}}}*/
<?php use Asf\Db; use Asf\Loader; use Asf\Application; $configs = array( 'asf' => array( 'root_path' => realpath(dirname(__FILE__)), ) ); class IndexService { public function indexAction() { Loader::get('IndexLogic')->test(); } } class IndexLogic { public function test() { Loader::get('IndexDao')->test(); } } class IndexDao {/*{{{*/ public function init($db_type) { $configs = array( 'dsn' => array('host' => '127.0.0.1', 'dbname' => 'test', 'port' => 6666), 'username' => 'test', 'password' => 'AbcdefRDvgedf', ); $db['master'] = $configs; $db['slave'] = $configs; Db::init($db[$db_type]); Db::setTable('test1'); } public function test() { $this->init('master'); $data = array('user' => 'lisi-2', 'pass' => '1234567'); var_dump(Db::insertIgnore($data)); } }/*}}}*/ $handle = new Application($configs); $handle->run();