'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)!










