PHP MST Library 3.1 数据库连接工厂DBC
MST Library 3.1 数据库连接工厂DBC 就是数据库连接工厂了,多的就不多说了**DBC类与接口**[代码片段(188行)]**配置文件举例**[代码片段(105行)]
就是数据库连接工厂了,多的就不多说了
DBC类与接口
<?php /** * DataBase Common Connector * 数据库共用连接器,连接驱动以如下的方式存放: * DBC/PdoOci.php * DBC/PdoMySQL.php * DBC/MySQLi.php * 连接驱动必须实现MST_IDBC接口 * * 调用一个数据库的连接实例如下: * <code> * MST_DBC::connect($remote); * # $remote对应config中配置 * </code> * * @author Janpoem */ interface MST_IDBC { public function connect(& $config); public function disconnect(); public function getStatement(); public function getConnector(); public function getFecthMode($mode = MST_DBC::FETCH_ASSOC); public function lastSql(& $index = 0); public function lastInsertId($table, $column); public function & query($sql, $params = null); public function execute($sql, $params = null); public function select($conditions, $params = null); public function insert($table, array $data); public function update($table, array $target, array $data); public function updateAll($table, array $data); public function delete($table, array $target); public function deleteAll($table); public function truncate($table); public function showTables(); public function getDtFormat(); public function startTransaction(); public function commit(); public function rollBack(); public function takeOverDisconnect(); public function fetch($style = MST_DBC::FETCH_ASSOC); public function fetchAll($style = MST_DBC::FETCH_ASSOC); public function quote($val); public function isAutoCommit(); } abstract class MST_DBC { const LOCAL = 'default', PDO_MYSQL = 'mysql', PDO_OCI = 'oracle', OCI8 = 'oci8', CLOB = 'CLOB', BLOB = 'BLOB', CREATE = 'create', UPDATE = 'update', DELETE = 'delete', FETCH_ASSOC = 2, FETCH_NUM = 3, FETCH_BOTH = 4; private static $_dbConfigKey = 'database', $_dbConfig = array(), $_adapters = array( self::PDO_MYSQL => 'PdoMySQL', self::PDO_OCI => 'PdoOci', self::OCI8 => 'Oci8', ), $_importAdapters = array(), $_register = array(); protected static $_querySql = array(), $_lastHash = null; final static public function & connect($remote = null) { if ($remote == null) $remote = self::LOCAL; if (!isset(self::$_register[$remote])) { $config = MST_Core::getConfig(self::$_dbConfigKey, $remote); if (empty($config)) MST_Core::error(301, $remote); if (empty($config['adapter']) || !isset(self::$_adapters[$config['adapter']])) MST_Core::error(302, $remote); $adapter = self::$_adapters[$config['adapter']]; $adapterClass = __CLASS__ . '_' . $adapter; if (!isset(self::$_importAdapters[$adapter])) { if (!MST_Core::import("MST/DBC/{$adapter}", MST_Core::P_LIB) || !class_exists($adapterClass)) MST_Core::error(302, "MST/DBC/$adapter"); self::$_importAdapters[$adapter] = 1; } self::$_register[$remote] = new $adapterClass($config); } return self::$_register[$remote]; } final static public function disconnect($remote = null) { if ($remote == null) { foreach (self::$_register as $conn) { if (!empty($conn)) $conn->disconnect(); } } else { self::connect($remote)->disconnect(); } } final static public function getConfig($key, $remote = self::LOCAL) { if (empty(self::$_dbConfig[$remote])) self::$_dbConfig[$remote] = MST_Core::getConfig(self::$_dbConfigKey, $remote); if (!empty(self::$_dbConfig[$remote][$key])) return self::$_dbConfig[$remote][$key]; return null; } final static public function addAdapter($key, $val) { if (!isset(self::$_adapters[$key])) self::$_adapters[$key] = $val; } final static public function getLastSqlHash() { return self::$_lastHash; } /** * 启动数据库事务 * @param string $remote 连接实例 */ final static public function startTransaction($remote = self::LOCAL) { return self::connect($remote)->startTransaction(); } /** * 数据库事务提交 * @param string $remote 连接实例 */ final static public function commit($remote = self::LOCAL) { return self::connect($remote)->commit(); } /** * 数据库事务回滚 * @param string $remote 连接实例 */ final static public function rollBack($remote = self::LOCAL) { return self::connect($remote)->rollBack(); } /** * 接管某个连接实例的 * @param unknown_type $remote */ final static public function handleDisconnect($remote = self::LOCAL) { return self::connect($remote)->takeOverDisconnect(); } }
- 上一篇:PHP 使用SimpleXML处理XML
- 下一篇:php 自己开发的MVC框架
精彩图集
精彩文章