iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >开发自己的框架——(二)数据库工具类的封装
  • 423
分享到

开发自己的框架——(二)数据库工具类的封装

2024-04-02 19:04:59 423人浏览 八月长安
摘要

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

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

<?php
interface I_DAO
{
        //查询所有数据的功能
        public function getAll($sql='');
//    //查询一条数据
        public function getRow($sql='');
//    //查询一个字段的值
        public function getOne($sql='');
//    //执行增删改的功能
        public function exec($sql='');
//    (查询的时候,返回的结果数)
        public function resultRows();
//    //查询执行插入操作返回的主键的值
        public function lastInsertId();
//    //
        public function query($sql='');
//    //转义引号、并包裹的
        public function escapeData($data='');
}

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

<?php

class DAOPDO implements I_DAO
{    
    private $host;
    private $dbname;
    private $user;
    private $pass;
    private $port;
    private $charset;
    
    //该属性保存pdo对象
    private $pdo;
    
    //查询语句返回的结果集数量
    private $resultRows;
    
    //私有属性保存该该实例
    private static $instance;
    //私有的构造方法
    private function __construct($option=array())
    {
        //初始化服务器的配置
        $this -> 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语句错误,具体信息如下:<br>".$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语句错误,具体信息如下:<br>".$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语句错误,具体信息如下:<br>".$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语句错误,具体信息如下:<br>".$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);
    }
}


您可能感兴趣的文档:

--结束END--

本文标题: 开发自己的框架——(二)数据库工具类的封装

本文链接: https://www.lsjlt.com/news/44144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何开发自己的javascript框架
    在当今的互联网时代中,JavaScript已经成为了开发前端应用程序的必备技能。而在开发Web应用的过程中,JavaScript框架则是无法避免的话题。因为它可以帮助我们更加高效地开发,更好地组织代码,提高代码的可重用性和可维护性。使用Ja...
    99+
    2023-05-17
  • PHP CodeIgniter框架开发工具推荐:提升开发效率的不二之选
    一、代码编辑器 代码编辑器是程序员用来编写代码的工具,对于提升开发效率至关重要。以下推荐几款适合PHP CodeIgniter开发的代码编辑器: 1. Sublime Text Sublime Text是一款跨平台的代码编辑器,以其简洁...
    99+
    2024-02-07
    PHP CodeIgniter 开发工具 代码编辑器 集成开发环境 调试工具 版本控制系统
  • Java开发者必备10大数据工具和框架
    当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂。根据外媒的一项调查报告,中软卓越专家列出了Java程序员在过去12个月内一直使用的一些工具或框架,或许会对你有...
    99+
    2023-05-31
    java 大数据工具 框架
  • Java开发者必会的大数据工具和框架有哪些
    这篇文章主要介绍了Java开发者必会的大数据工具和框架有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java开发者必会的大数据工具和框架有哪些文章都会有所收获,下面我们一起来看看吧。MongoDB——最受...
    99+
    2023-06-05
  • 使用Springboot封装一个自适配的数据单位转换工具类
    目录前言本篇内容简要:开始封装:① 初步的封装,通过map去标记需要转换的 类属性字段② 进一步的封装, 配合老朋友自定义注解搞事情总结前言 平时做一些统计数据,经常从数据库或者是从...
    99+
    2023-03-08
    springboot 单位转换工具类 spring工具类 springboot转换器
  • 基于Docker封装的开发包工具介绍
    本篇内容介绍了“基于Docker封装的开发包工具介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基于 Docker1.12+ (Docke...
    99+
    2023-06-04
  • Go语言常用的开发工具和框架
    Go语言作为一种快速、高效的编程语言,受到越来越多开发者的喜爱和使用。在Go语言的开发过程中,选择合适的开发工具和框架可以极大地提高开发效率。本文将介绍一些Go语言常用的开发工具和框架...
    99+
    2024-03-01
    框架 编译器 ide go语言
  • 数据库和开发行业中的IDE工具
     在我从事DBA工作的这些年,经常会有网友会问我,数据库有什么好的工具可以使用,让我给推荐几个,数据库的工具还少吗,Oracle阵营:  Toad(付费),SQL Developer(免费),PLSQL dev(付费),...
    99+
    2023-06-03
  • 怎么使用Springboot封装一个自适配的数据单位转换工具类
    今天小编给大家分享一下怎么使用Springboot封装一个自适配的数据单位转换工具类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-05
  • 如何封装Python时间处理库创建自己的TimeUtil类
    本篇内容主要讲解“如何封装Python时间处理库创建自己的TimeUtil类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何封装Python时间处理库创建自己的TimeUtil类”吧!简介在日...
    99+
    2023-07-06
  • 封装 Python 时间处理库创建自己的TimeUtil类示例
    目录简介功能代码封装示例Demo:感悟简介 在日常的Python开发中,处理时间和日期的需求是非常常见的。尽管Python内置了 datetime 和 time 模块,但在某些情况下...
    99+
    2023-05-18
    封装 Python TimeUtil类 封装 Python TimeUtil类
  • 怎么封装Python时间处理库创建自己的TimeUtil类
    简介在日常的Python开发中,处理时间和日期的需求是非常常见的。尽管Python内置了 datetime 和 time 模块,但在某些情况下,它们可能不够直观和易用。为了解决这个问题,我们封装一个名为 TimeUtil 的时间处理类,通过...
    99+
    2023-05-14
    Python
  • 通过Go语言开发实现自动化测试的工具与框架
    通过Go语言开发实现自动化测试的工具与框架一、绪论随着软件开发的不断进步,自动化测试在保证软件质量和提高开发效率方面扮演着重要角色。而Go语言,作为一种简洁、高效、并发的编程语言,逐渐受到开发者们的喜爱。本文将介绍如何使用Go语言开发实现自...
    99+
    2023-11-20
    自动化测试 关键词:Go语言 工具与框架
  • 选择适合自己的 Python 响应开发框架,是高效开发的关键吗?
    Python是当今最受欢迎的编程语言之一,其强大的灵活性和易用性,使其成为许多开发人员和企业的首选。Python的开源生态系统提供了众多的开发框架,这些框架提供了一系列的工具和库,使开发者可以快速地开发应用程序。然而,选择适合自己的Pyth...
    99+
    2023-07-08
    响应 开发技术 框架
  • Laravel框架:优雅、灵活、高效的PHP Web开发工具
    Laravel是一款基于PHP语言的Web应用框架,它被设计为一个优雅、简洁、又能够让开发者更高效地进行开发的PHP框架,其核心设计理念是开发者友好、灵活可扩展。 本文将从以下几个方面来实现Laravel的介绍和实战: 简介 2. 安装和...
    99+
    2023-09-30
    前端 php
  • 为什么选择 Laravel 框架作为您的开发工具?
    Laravel 是一种流行的 PHP 开发框架,它被广泛用于 Web 应用程序和网站的开发。这个框架已经成为开发人员的首选工具之一,因为它提供了一系列有用的功能和工具,使开发更加容易和高效。在本文中,我们将探讨为什么选择 Laravel 框...
    99+
    2023-10-27
    ide 数据类型 laravel
  • Java开发中常用的工具类库有哪些
    这篇文章主要讲解了“Java开发中常用的工具类库有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java开发中常用的工具类库有哪些”吧! Java开发...
    99+
    2024-04-02
  • 怎么让自己的开发工具变得更高大上一些
    这篇文章主要讲解了“怎么让自己的开发工具变得更高大上一些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么让自己的开发工具变得更高大上一些”吧!1. Nic...
    99+
    2024-04-02
  • php怎么封装数据库增删改的类
    随着web应用程序的发展,对于数据库管理的需求也越来越高。作为一名php程序员,如何优化执行增删改查的操作,是必须要解决的问题。而这个问题的解决,可以通过php封装数据库增删改的类来解决。1.为什么需要封装数据库类?通常情况下,在进行数据库...
    99+
    2023-05-14
    php
  • php如何封装数据库增删改的类
    本文小编为大家详细介绍“php如何封装数据库增删改的类”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何封装数据库增删改的类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.为什么需要封装数据库类?通常情...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作