美文网首页
php接口实现多数据库的增删改查内嵌单例模式

php接口实现多数据库的增删改查内嵌单例模式

作者: 江江简书 | 来源:发表于2020-03-29 15:30 被阅读0次

前言:公司项目没有用到框架开发,所有的东西都是自己编写的,但是慢慢的发现前辈封装的方法,有些鸡肋同时每次调用的时候都要人为手动的删除数据库的连接同时也没有实现单例,如果实例化较多后会给项目带来资源的浪费,想着能不能在这个基础上优化一下项目

代码实现

<?php
/**
 * Created by PhpStorm.
 * User: jiangshiwen
 * Date: 2020/3/29
 * Time: 13:04
 */

/**
 * Interface Db
 * 实现一个数据的接口方法
 */
interface Db{
    function add();//增加
    function delete();//删除
    function update();//修改
    function query();//查找
}

/**
 * Class mysqlDb
 * 实现mysql的增删改查方法
 */
class mysqlDb implements Db{
    //创建静态私有的变量保存该类对象
    static private $instance;
    private $myconnobj = '';//用来保存连接的参数
    //防止使用clone克隆对象
    private function __clone(){}
    //定义一个连接对象的obj

    /**
     * 实现数据库的连接
     */
    function __construct(){
        //在这里实现mysql连接参数的配置连接
        $this->myconnobj =  'obj';
    }

    /**
     * @return mysqlDb
     * 实例化
     */
    static public function getInstance()
    {
        //判断$instance是否是Singleton的对象,不是则创建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }
    /**
     * 用来myql增加的方法
     */
    function add(){
        echo '我是mysql-增加方法'.'<pre />';
    }

    /**
     * 删除方法
     */
    function delete()
    {
        echo '我是mysql-delete'.'<pre />';
    }
    /**
     * 修改方法
     */
    function update()
    {
        echo '我是mysql-update'.'<pre />';
    }
    /**
     * 查找方法
     */
    function query()
    {
        echo '我是mysql-query'.'<pre />';
    }

    /**
     * 销毁连接
     */
    function __destruct(){
        echo 'mysql断开所有的连接参数'.'<pre />';
    }
}

/**
 * Class sqlser
 * 实现sqlser的增删改查
 */
class sqlser implements Db{
    private $myconnobj = '';//用来保存连接的参数
    static private $instance;//返回实例化的对象
    //防止使用clone克隆对象
    private function __clone(){}

    /**
     * @return sqlser
     * 实现单例的方法
     */
    static public function getInstance()
    {
        //判断$instance是否是Singleton的对象,不是则创建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }
    /**
     * 实现数据库的连接
     */
    function __construct(){
        //在这里实现sql连接参数的配置连接
        $this->myconnobj =  'obj';
    }
    /**
     * 用来myql增加的方法
     */
    function add(){
        echo '我是sqser-增加方法'.'<pre />';
    }

    /**
     * 删除方法
     */
    function delete()
    {
        echo '我是sqser-delete'.'<pre />';
    }
    /**
     * 修改方法
     */
    function update()
    {
        echo '我是sqser-update'.'<pre />';
    }
    /**
     * 查找方法
     */
    function query()
    {
        echo '我是sqser-query'.'<pre />';
    }

    /**
     * 销毁连接
     */
    function __destruct(){
        echo 'sqr断开所有的连接参数'.'<pre />';
    }

}

/**
 * Class DbFunc
 * 对外暴露调用的方法
 */
class DbFunc{

    /**
     * @param $cls
     * 实现查找的方法
     */
    public static function foreignQuery($cls){
        $cls->query();//实现查找功能
    }

    /**
     * @param $cls
     * 实现添加方法
     */
    public static function foreignAdd($cls){
        $cls->add();
    }

    /**
     * @param $cls
     * 实现删除方法
     */
    public static function foreignDel($cls){
        $cls->delete();
    }

    /**
     * @param $cls
     * 实现查找方法
     */
    public static function foreignUpd($cls){
        $cls->update();
    }
}


DbFunc::foreignQuery(mysqlDb::getInstance());
DbFunc::foreignQuery(sqlser::getInstance());
//调用查找方法
DbFunc::foreignQuery(mysqlDb::getInstance());
DbFunc::foreignQuery(sqlser::getInstance());
//调用新增方法
DbFunc::foreignAdd(mysqlDb::getInstance());
DbFunc::foreignAdd(sqlser::getInstance());
//调用删除方法
DbFunc::foreignDel(mysqlDb::getInstance());
DbFunc::foreignDel(sqlser::getInstance());
//调用修改方法
DbFunc::foreignUpd(mysqlDb::getInstance());
DbFunc::foreignUpd(sqlser::getInstance());

效果图

image.png

最后:这里只是简单的代码实现,后期肯定要自己传递sql参数到每一个方法才能真正实现你想要的方法

相关文章

  • php接口实现多数据库的增删改查内嵌单例模式

    前言:公司项目没有用到框架开发,所有的东西都是自己编写的,但是慢慢的发现前辈封装的方法,有些鸡肋同时每次调用的时候...

  • PHP PDO扩展

    一、简介 PDO扩展为PHP访问数据库定义了一套轻量级的接口,PHP通过调用接口,可以很方便的实现数据的增删改查。...

  • PHP快速入门之 PHP与MYSQL(一)

    8.1案例介绍 通过PHP与MYSQL数据库的连接和基本操作,实现对数据库的增删改查。 8.2分析案例 使用PHP...

  • 移动架构--12.数据库框架

    实现数据库、表的创建,便于扩展。调用层直接一个对象丢过去,即可实现增删改查。1.数据库增删改查接口 2.注解因为在...

  • python的单例模式 连接mongo数据库

    数据库的增删改查都先要链接数据库,不然到处都在链接数据库,很烂费资源和性能,今天就把mongo的连接池的单例模式封...

  • App接口开发

    单例模式连接数据库 开发首页接口方式 开发版本升级接口

  • node的前后链条思路

    curd || resetfo(增删改查)增删改查就是调用数据库-mysql-sequelize 接口 $ npm...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 单例模式序列化时注意!

    单例模式类实现Serializable接口后, 在序列化时, getInstance方法变的不可用, 所以单例模式...

  • 设计模式

    单例模式模式工厂模式模式策略者模式适配器模式观察者模式 单例模式 php的应用主要在于数据库应用: 一个应用中会存...

网友评论

      本文标题:php接口实现多数据库的增删改查内嵌单例模式

      本文链接:https://www.haomeiwen.com/subject/mfcuuhtx.html