zoukankan      html  css  js  c++  java
  • PHP适配器模式

    【IDatabase.php】

    <?php
    /**
     * 适配器模式
     * 可以将不同的函数接口封装成统一的API
     * 应用举例1:数据库操作 mysql/mysqli/pdo
     * 应用举例2:缓存适配器 memcache/redis/file/apc
     */
    
    /**
     * 定义数据库操作的接口
     */
    interface IDatabase
    {
        //数据库连接操作
        public function connect($host, $user, $passwd, $dbname);
    
        //数据库查询
        public function query($sql);
    
        //关闭数据库连接
        public function close();
    }

    【MysqliAdapter.class.php】

    <?php
    /**
     * 适配器模式--适配mysqli数据库的连接类
     */
    
    require_once 'interface/IDatabase.php';
    
    class MysqliAdapter implements IDatabase
    {
        protected $conn;
    
        public function connect($host, $user, $passwd, $dbname)
        {
            $conn = mysqli_connect($host, $user, $passwd, $dbname);
            $this->conn = $conn;
        }
    
        public function query($sql)
        {
            return mysqli_query($this->conn, $sql);
        }
    
        public function close()
        {
            mysqli_close($this->conn);
        }
    }
    
    

    【MysqlAdapter.class.php】

    //适配mysql的连接类
    class MysqlAdapter implements IDatabase{}

    【PdoAdapter.class.php】

    //适配pdo的连接类
    class PdoAdapter implements IDatabase{}

    《调用》

    ////【适配器模式】
    //可以方便的切换使用哪种数据库,其他的代码不需要改动
    $db = new MysqliAdapter(); //适配mysqli
    //$db = new MysqlAdapter(); //适配mysql
    //$db = new PdoAdapter(); //适配pdo
    $db->connect('127.0.0.1', 'root', '123456', 'mysql');
    $res = $db->query("show databases");
    $db->close();
    var_dump($res);
  • 相关阅读:
    web应用/http协议/web框架
    算法-排序-1.冒泡排序/2.选择排序/3.插入排序
    算法-基础和查找-1.汉诺塔/2.顺序查找/3.二分查找/4.顺序查找和二分查找的比较
    前端开发
    前端开发
    前端开发
    前端开发
    数据库
    LeetCode : Add Binary
    LeetCode : Length of Last Word
  • 原文地址:https://www.cnblogs.com/rxbook/p/10452574.html
Copyright © 2011-2022 走看看