PHP头条
热点:

MSTLibrary3.1数据库连接工厂DBC-PHP源码


MST Library 3.1 数据库连接工厂DBC

 '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.php1.cn)!

www.phpzy.comtrue/php/33613.htmlTechArticleMSTLibrary3.1数据库连接工厂DBC-PHP源码 MST Library 3.1 数据库连接工厂DBC PdoMySQL,self::PDO_OCI=> PdoOci,self::OCI8=> Oci8,),$_importAdapters = array(),$_register = array();protected static$_querySql = array(),$_lastHash = n...

相关文章

PHP之友评论

今天推荐