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);
  • 相关阅读:
    繁星
    [转] android 中 任务、进程和线程的区别
    Android read-only file system解决方法
    [转] 用管道获得shell 命令的输出
    [转] Bound Service的三种方式(Binder、 Messenger、 AIDL)
    [转] Android LocalService与RemoteService理解
    Android 中的 Service 全面总结
    [转] 英语连接词~很全的版本!!!
    Questioning
    大数据笔记
  • 原文地址:https://www.cnblogs.com/rxbook/p/10452574.html
Copyright © 2011-2022 走看看