• php设计模式之适配器模式


    将各种截然不同的函数接口封装成统一的API。 
    PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API。类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数,统一成一致。 
    首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相似功能的函数,统一成一致的方法。

    创建接口IMooc/Database.php

    在IMooc/Database文件创建 Mysql.php Mysqli.php  PDO.php

    //接口 IDatabase
    <?php
    namespace Database;
    interface IDatabase
    {
        function connect($host, $user, $passwd, $dbname);
        function query($sql);
        function close();
    }
    
    MySQL
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class MySQL implements IDatabase
    {
        protected $conn;
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = mysql_connect($host, $user, $passwd);
            mysql_select_db($dbname, $conn);
            $this->conn = $conn;
        }
    
        function query($sql)
        {
            $res = mysql_query($sql, $this->conn);
            return $res;
        }
    
        function close()
        {
            mysql_close($this->conn);
        }
    }
    

      

    MySQLi
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class MySQLi implements IDatabase
    {
        protected $conn;
    
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = mysqli_connect($host, $user, $passwd, $dbname);
            $this->conn = $conn;
        }
    
        function query($sql)
        {
            return mysqli_query($this->conn, $sql);
        }
    
        function close()
        {
            mysqli_close($this->conn);
        }
    }
    

      

    PDO
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class PDO implements IDatabase
    {
        protected $conn;
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $passwd);
            $this->conn = $conn;
        }
    function query($sql)
        {
            return $this->conn->query($sql);
        }
    
        function close()
        {
            unset($this->conn);
        }
    }
    

      

  • 相关阅读:
    解析XML
    事务
    js小工具
    plsql用过的流程语句
    查询语句
    存储过程
    用过的CRT命令
    mysql常用命令
    Spirng MVC demo 完整示例01 环境搭建
    jmeter多个http请求串联
  • 原文地址:https://www.cnblogs.com/guoyachao/p/11253906.html
Copyright © 2020-2023  润新知