开发自己的框架——(二)数据库工具类的封装
admin
2023-06-06 13:41:31
0次

为了让框架的内容与数据分离,我们把常用的类封装到一个工具类中,当用到这些方法时,就调用这个封装好的类,能够使代码的复用性得到很大的提高。
首先,封装数据库相关操作,为了使封装规范化,我们创建一个接口让数据库实现接口中的方法,数据库使用PDO扩展访问数据。
数据库接口类 
I_DAO.interface.php

数据库工具类中,对象只能通过静态方法创建一个实例(单例模式),不能通过克隆和继承创建对象,数据库的连接信息通过数组传递到方法中,工具类中有查询所有数据方法、查询一条数据方法、获得一个字段值的方法、实现增删改方法、
返回结果数量的方法等。
数据库操作工具类
DAOPDO.class.php

 initOptions($option);
        //初始化PDO对象
        $this -> initPDO();
    }
    //私有的克隆方法
    private function __clone()
    {
        
    }
    //公共的静态方法实例化单例对象
    public static function getSingleton($options=array())
    {
        if(!self::$instance instanceof self){
            //实例化
            self::$instance = new self($options);
        }
        return self::$instance;
    }
    //初始化服务器的配置
    private function initOptions($option)
    {
        $this -> host = isset($option['host'])?$option['host']:'';
        $this -> dbname = isset($option['dbname'])?$option['dbname']:'';
        $this -> user = isset($option['user'])?$option['user']:'';
        $this -> pass = isset($option['pass'])?$option['pass']:'';
        $this -> port = isset($option['port'])?$option['port']:'';
        $this -> charset = isset($option['charset'])?$option['charset']:'';
    }
    //初始化PDO对象
    private function initPDO()
    {
        $dsn = 
        "mysql:host=$this->host;dbname=$this->dbname;port=$this->port;charset=$this->charset";
        $this -> pdo = new PDO($dsn,$this->user,$this->pass);
    }
    //封装pdostatement对象
    public function query($sql="")
    {    
        //返回pdo_statement对象
        return $this->pdo -> query($sql);
    }
    //查询所有数据
    public function getAll($sql='')
    {
        $pdo_statement = $this->query($sql);
        $this->resultRows = $pdo_statement -> rowCount();
        if($pdo_statement==false){
            //输出SQL语句的错误信息
            $error_info = $this->pdo-> errorInfo();
            $err_str = "SQL语句错误,具体信息如下:
".$error_info[2];             echo $err_str;             return false;         }         $result = $pdo_statement -> fetchAll(PDO::FETCH_ASSOC);         return $result;     }     //查询一条记录     public function getRow($sql='')     {         $pdo_statement = $this->query($sql);         if($pdo_statement==false){             //输出SQL语句的错误信息             $error_info = $this->pdo-> errorInfo();             $err_str = "SQL语句错误,具体信息如下:
".$error_info[2];             echo $err_str;             return false;         }         $result = $pdo_statement -> fetch(PDO::FETCH_ASSOC);         return $result;     }     //获得一个字段的值     public function getOne($sql='')     {         $pdo_statement = $this->query($sql);         if($pdo_statement==false){             //输出SQL语句的错误信息             $error_info = $this->pdo-> errorInfo();             $err_str = "SQL语句错误,具体信息如下:
".$error_info[2];             echo $err_str;             return false;         }         //返回查询的字段的值,我们在执行sql语句之前就应该明确查询的是哪个字段,这样fetchColumn就已经知道查询的字段值         $result = $pdo_statement -> fetchColumn();         return $result;     }     //实现非查询的方法     public function exec($sql='')     {         $result = $this->pdo -> exec($sql);         //===为了区分 受影响的记录数是0的情况         if($result===false){             $error_info = $this->pdo-> errorInfo();             $err_str = "SQL语句错误,具体信息如下:
".$error_info[2];             echo $err_str;             return false;         }         return $result;     }     //查询语句返回的结果数量     public function resultRows()     {         return $this->resultRows;     }     //返回上次执行插入语句返回的主键值     public function lastInsertId()     {         return $this->pdo->lastInsertId();     }     //数据转义并引号包裹     public function escapeData($data='')     {         return $this->pdo->quote($data);     } }


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...