码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2020-01-08 01:11:16      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:auto   mysqli   mysql   app   调用   turn   pass   test   注册   

概念:把不同的接口封装成统一的api

 

实例: 这里以数据库连接为例

首先定义一个接口来约束数据库类必须实现的方法:DatabaseInterFace.php

<?php

namespace app;

/**
 * 数据库连接接口
 * Interface DatabaseInterFace
 * @package app
 */
interface DatabaseInterFace
{
    /**
     * 数据库连接
     * @param $host string 地址
     * @param $user string 用户名
     * @param $password string 密码
     * @param $dbName string 数据库名
     * @return mixed
     */
    public function connect($host, $user, $password, $dbName);

    /**
     * 执行sql
     * @param $sql string 执行语句
     * @return mixed
     */
    public function query($sql);

    /**
     * 关闭数据库连接
     * @return mixed
     */
    public function close();
}

 

开始定义数据库连接类:

技术图片

 

以Mysql.php为例

<?php

namespace app\driver;

/**
 * Mysql连接类
 * Class Mysql
 * @package app\driver
 */
class Mysql implements \app\DatabaseInterFace
{
    protected $conn;

    /**
     * 数据库连接
     * @param $host string 地址
     * @param $user string 用户名
     * @param $password string 密码
     * @param $dbName string 数据库名
     * @return mixed
     */
    public function connect($host, $user, $password, $dbName)
    {
        // 这里把数据库连接代码加上
    }

    /**
     * 执行sql
     * @param $sql string 执行语句
     * @return mixed
     */
    public function query($sql)
    {
    // 这里要把实际代码补上
    }

    /**
     * 关闭数据库连接
     * @return mixed
     */
    public function close()
    {
    // 这里要把实际代码补上
    }
}

图中Mysqli.php和PDO.php和上面的Mysql.php文件一样,也是要实现connect、query、close方法,只是各自的连接代码写法不一样(这个和thinkphp5的数据库连接驱动类似)

 

定义好了数据库连接类,开始在index.php中调用

<?php

// 定义自动注册
spl_autoload_register(function ($class) {
    include $class . ‘.php‘;
});

// 调用数据库连接类
// 说明:由于数据库连接我们都定义成一样的方法了,所以这里可以根据自己的需要把Mysql连接类换成PDO或者Mysqli或者其他,这就凸现了适配器的作用
$database = new \app\driver\Mysql();

// 连接数据库
$dbConn = $database->connect(‘127.0.0.1‘, ‘root‘, ‘root‘, ‘test‘);

// 执行sql
$res = $dbConn->query(‘select * from t_study limit 1‘);

// 关闭数据库连接
$dbConn->close();

 

到此就完成了

 

适配器模式

标签:auto   mysqli   mysql   app   调用   turn   pass   test   注册   

原文地址:https://www.cnblogs.com/waterliang/p/12164097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!