开发自己的框架——(二)数据库工具类的封装
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,为了让框架的内容与数据分离,我们把常用的类封装到一个工具类中,当用到这些方法时,就调用这个封装好的类,能够使代码的复用性得到很大的提高。首先,封装数据库相关操作,为了使封装规范化,我们创建一个接口让数
千家信息网最后更新 2026年10月31日开发自己的框架——(二)数据库工具类的封装
为了让框架的内容与数据分离,我们把常用的类封装到一个工具类中,当用到这些方法时,就调用这个封装好的类,能够使代码的复用性得到很大的提高。
首先,封装数据库相关操作,为了使封装规范化,我们创建一个接口让数据库实现接口中的方法,数据库使用PDO扩展访问数据。
数据库接口类
I_DAO.interface.php
数据库工具类中,对象只能通过静态方法创建一个实例(单例模式),不能通过克隆和继承创建对象,数据库的连接信息通过数组传递到方法中,工具类中有查询所有数据方法、查询一条数据方法、获得一个字段值的方法、实现增删改方法、
返回结果数量的方法等。
数据库操作工具类
DAOPDO.class.phpinitOptions($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); }}
数据
查询
方法
语句
信息
数据库
对象
错误
字段
封装
工具
实例
接口
结果
输出
功能
包裹
引号
数量
转义
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
互联网科技公司排名
中关村互联网科技集团
科技赋能下的互联网金融
互联网金融 科技金融
嘟嘟瓜互联网科技
丰台科技园 互联网
西安互联网科技公司
友谊互联网络科技
互联网科技logo
长亮科技 互联网金融
互联网金融科技委员会
镁科技互联网资讯平台
哈尔滨秒房互联网科技有限公司
青岛中康互联网医疗科技有限公司
阿里巴巴算科技企业还是互联网
重庆威客帮互联网科技
互联网在线教育科技创业
昆明中奇联合互联网科技
互联网科技接地气
互联网科技工作委员会毛军
互联网的科技
重庆互联网络科技
猪兼强互联网科技
科技伦理 互联网公司
科技与互联网哪个更好
南平创想时代互联网科技有限公司
花神(南京)互联网科技有限公司
安徽零酒互联网科技有限公司
武汉亿视互联网科技有限公司