美文网首页
PHP设计模式之适配器模式

PHP设计模式之适配器模式

作者: 皮蛋馅儿 | 来源:发表于2020-03-07 21:25 被阅读0次

    1、适配器模式,可以将截然不同的函数接口封装成统一的API
    2、应用实例:PHP的数据库操作有mysql、pdo、mysqli,可以用适配器模式统一成一致。
    3、代码实例:
    首先定义一个适配所有数据库操作的接口

    <?php
    
    interface IDatabase
    {
        /**
         * 数据库连接
         * @param string $host
         * @param string $user
         * @param string $name
         * @param string $dbName
         * @return mixed
         */
        function connect($host, $user, $name, $dbName);
    
        /**
         * 数据库查询
         * @param $sql
         * @return mixed
         */
        function query($sql);
    
        /**
         * 关闭数据库
         * @return mixed
         */
        function close();
    }
    

    接着定义各种数据库类型操作接口,第一种MySQL

    <?php
    
    namespace db;
    
    class MySQL implements \IDatabase
    {
        protected $conn;
    
        public function connect($host, $user, $name, $dbName)
        {
            $this->conn = mysql_connect($host, $user, $name);
            mysql_select_db($dbName, $this->conn);
        }
    
        public function query($sql)
        {
            return mysql_query($sql, $this->conn);
        }
    
        public function close()
        {
            mysql_close($this->conn);
        }
    }
    

    第二种MySQLi

    <?php
    
    namespace db;
    
    class MySQLi implements \IDatabase
    {
        protected $conn;
    
        public function connect($host, $user, $name, $dbName)
        {
            $this->conn = mysqli_connect($host, $user, $name, $dbName);
        }
    
        public function query($sql)
        {
            return mysqli_query($this->conn, $sql);
        }
    
        public function close()
        {
            mysqli_close($this->conn);
        }
    }
    

    第三种PDO

    <?php
    
    namespace db;
    
    class PDO implements \IDatabase
    {
        protected $conn;
    
        public function connect($host, $user, $name, $dbName)
        {
            $this->conn = new \PDO("mysql:host=$host;dbname=$dbName", $user, $name);
        }
    
        public function query($sql)
        {
            return $this->conn->query($sql);
        }
    
        public function close()
        {
            unset($this->conn);
        }
    }
    

    需要哪种数据库类型的操作直接调用哪个类型即可,比如想使用pdo的,则直接:

    $pdo = new \db\PDO();
    $pdo->connect('x', 'x', 'x', 'x');
    $pdo->query('xxx');
    $pdo->close();
    

    加我微信公众号【皮蛋馅儿】,一起学习哦~

    相关文章

      网友评论

          本文标题:PHP设计模式之适配器模式

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