PHP设计模式之适配器模式

2020-03-07  本文已影响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();

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

上一篇 下一篇

猜你喜欢

热点阅读