PHP 数据持久化抽象类
<?php abstract class rdbmsBase { /** * $_connection_resource用于记录连接句柄; * * @var resource; */ protected $_connection_resource; /** */ protected $_connection_type; /** * instance,记录类的实例对象,防止重复连接databases实例; * * @var array; */ protected static $instance; /** * 函数__construct为类的构造函数; * * @param * database_host string [必选] 数据库的地址; * @param * database_user string [必须] 数据库的 用户名; * @param * database_password string [必须] 数据库的密码; * @param * pconnect bool [可选] 连接的类型是否长链接; * @param * database_name string [可选] 默认数据库名; * @param * driver_options array [可选] 连接数据库的选项; * * @return void; * */ public abstract function __construct($database_host, $database_user, $database_password, $pconnect = false, $database_name = 'test', array $driver_options = array()); /** * 函数transactionBegin标记一个事务起始点; * * @param * void; * * @return bool; */ public abstract function transactionBegin(); /** * 函数transactionCommit提交一个事务; * * @param * void; * * @return bool; */ public abstract function transactionCommit(); /** * 函数transactionRollBack回滚一个事务; * * @param * void; * * @return bool; */ public abstract function transactionRollBack(); /** * 函数transactionInside判断当前是否在一个事务里面; * * @param * void; * * @return bool; */ public abstract function transactionInside(); /** * 函数exec执行一条原生的写入sql; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * * @return bool; * */ public abstract function exec($sql); /** * 函数execExecute通过预处理方式执行一条写入sql; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * parameters array 预处理sql参数; * * @return bool; * */ public abstract function execExecute($sql, array $parameters = array()); /** * 函数queryReturnPDOStatement执行一条原生的读操作sql,并返回查询结果集; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * * @return statement,成功返回statement,失败返回false; * */ public abstract function queryReturnStatement($sql); /** * 函数queryExecuteReturnPDOStatement通过预处理方式执行一条读取sql,并且返回查询结果集; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * parameters array 预处理sql参数; * * @return statement,成功返回statement,失败返回false; * */ public abstract function queryExecuteReturnStatement($sql, array $parameters = array()); /** * 函数queryExecute通过预处理方式执行一条读取sql,并且返回查询结果数组; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * parameters array 预处理sql参数; * @param * fetchStyle int 返回结果的类型,默认是@assoc:返回索引数组类型的结果; * * @return array,成功返回一个数组,失败返回false; * */ public abstract function queryExecute($sql, $parameters = array(), $fetch_style = 'assoc'); /** * 函数queryExecuteOne通过预处理方式执行一条只返回单条数据的读取sql,并且返回查询结果的一数组组; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * parameters array 预处理sql参数; * @param * fetchStyle int 返回结果的类型,默认是@assoc返回数组类型的结果; * * @return array,成功返回一个数组,失败返回false; * */ public abstract function queryExecuteOne($sql, $parameters = array(), $fetch_style = 'assoc'); /** * 函数query执行一条读取sql,并且返回查询结果数组; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * fetchStyle int 返回结果的类型,默认是@assoc:返回索引数组类型的结果; * * @return array,成功返回一个数组,失败返回false; * */ public abstract function query($sql, $fetch_style = 'assoc'); /** * 函数queryOne执行一条只返回单条数据的读取sql,并且返回查询结果的一数组组; * * @param * sql string 原生的标准sql,表名使用{databaseName.table}形式; * @param * fetchStyle int 返回结果的类型,默认是@assoc:返回数组类型的结果; * * @return array,成功返回一个数组,失败返回false; * */ public abstract function queryOne($sql, $fetch_style = 'assoc'); /** * 函数lastInsertId获取最后一条数据的插入递增ID; * * @param * void; * * @return int,成功返回最后一条预处理sql插入行的递增ID,失败返回false; * */ public abstract function lastInsertId(); /** * 函数lastRowCount返回最后一条sql的影响行数,当最后一条sql是使用预处理的方式执行的; * * @return int,成功返回int,当最后一条执行语句不为写入操作和操作失败返回false; */ public abstract function lastRowCount(); /** * 函数__destruct,类的虚构函数; * * @param * void; * * @return void; * */ public abstract function __destruct(); /** * 函数destruct为类的析构函数; * * @param * void * * @return void; * */ public static function destruct() { self::$instance = null; } /** * 函数getError,得到最后一条执行sql的错误信息; * * @param * void; * * @return false | array; * */ public abstract function lastError(); /** * 函数fetch,取出查询结果的当前一条数据,并且把游标下移一位; * * @param * PDOStatement object [必须] 查询结果集; * @param * isClose bool [可选] 是否关闭游标,默认@false:不关闭游标; * @param * fetchStyle int 返回结果的类型,默认是PDO::FETCH_ASSOC返回数组类型的结果; * * @return false | array; * */ public static function fetch($statement, $isClose = false, $fetchStyle) { } /** * 函数fetchAll,取出查询结果的所有数据,并且关闭游标; * * @param * PDOStatement object [必须] 查询结果集; * @param * fetchStyle int 返回结果的类型,默认是PDO::FETCH_ASSOC返回数组类型的结果; * * @return false | array; * */ public static function fetchAll($statement, $fetchStyle) { } /** * 函数single,实现单例模式; * * @param * databasesConfig array [必选] 数据库的配置; * @param * type enum('master','slaves') [可选] 连接类型默认为@master:主数据库; * @param * driverOptions array [可选] 连接数据库的选项,默认为空; * * @return 类的对象; * */ public static function singleton($database_host, $database_user, $database_password, $pconnect = false, $database_name = 'test', array $driver_options = array()) { $key = md5 ( json_encode ( array ( $database_host, $database_user, $database_password, $pconnect, $driver_options ) ) ); if (! isset ( self::$instance [$key] )) { $class_name = get_called_class (); self::$instance [$key] = new $class_name ( $database_host, $database_user, $database_password, $pconnect, $database_name, $driver_options ); } return self::$instance [$key]; } } ?>
本博客内容,如需转载请务必保留超链接。Contact Me:Mail此处省略好几个字...