目录
MST Library 3.1 数据库连接工厂DBC
<?php /** * DataBase Common Connector * 数据库共用连接器,连接驱动以如下的方式存放: * DBC/PdoOci.php * DBC/PdoMySQL.php * DBC/MySQLi.php * 连接驱动必须实现MST_IDBC接口 * * 调用一个数据库的连接实例如下: * * MST_DBC::connect($remote); * # $remote对应config中配置 * * * @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(); } }
登录后复制
2.配置文件举例
array( ), MST_Core::IN_DEV => array( 'database' => array( MST_DBC::LOCAL => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db', 'prefix' => 'pf', ), 'iphone' => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db_iphone', 'prefix' => false, ), ), MST_Mailer::FLAG => array( MST_Mailer::LOCAL => array( 'host' => 'localhost', 'port' => 25, 'debug' => 0, 'charset' => PROJECT_ENCODE, 'language' => PROJECT_LANG, MST_Mailer::IS_SMTP => true, MST_Mailer::SMTP_AUTH => false, MST_Mailer::FROM_MAIL => 'any@host.com', MST_Mailer::FROM_NAME => 'anyone', ) ), ), MST_Core::IN_TEST => array( 'database' => array( MST_DBC::LOCAL => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db', 'prefix' => 'pf', ), 'iphone' => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db_iphone', 'prefix' => false, ), ), MST_Mailer::FLAG => array( MST_Mailer::LOCAL => array( 'host' => 'localhost', 'port' => 25, 'debug' => 0, 'charset' => PROJECT_ENCODE, 'language' => PROJECT_LANG, MST_Mailer::IS_SMTP => true, MST_Mailer::SMTP_AUTH => false, MST_Mailer::FROM_MAIL => 'any@host.com', MST_Mailer::FROM_NAME => 'anyone', ) ), ), MST_Core::IN_PRO => array( 'database' => array( MST_DBC::LOCAL => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db', 'prefix' => 'pf', ), 'iphone' => array( 'adapter' => MST_DBC::PDO_MYSQL, 'host' => '127.0.0.1', // 数据库连接ip 'user' => 'root', // 数据库账号 'password' => '', // 数据库密码 'dbname' => 'any_db_iphone', 'prefix' => false, ), ), MST_Mailer::FLAG => array( MST_Mailer::LOCAL => array( 'host' => 'localhost', 'port' => 25, 'debug' => 0, 'charset' => PROJECT_ENCODE, 'language' => PROJECT_LANG, MST_Mailer::IS_SMTP => true, MST_Mailer::SMTP_AUTH => false, MST_Mailer::FROM_MAIL => 'any@host.com', MST_Mailer::FROM_NAME => 'anyone', ) ), ), );
登录后复制
以上就是MST Library 3.1 数据库连接工厂DBC的内容,更多相关内容请关注PHP中文网(www.php.cn)!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
1 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
在哪里可以找到原子中的起重机控制钥匙卡
1 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)