美文网首页
PHP 适配器模式 与 接口

PHP 适配器模式 与 接口

作者: wyc0859 | 来源:发表于2019-02-15 16:29 被阅读0次

    接口

    什么时候用接口?

    1、定规范,保持统一性;
    2、多个平级的类需要去实现同样的方法,只是实现方式不一样

    接口规范
    • 接口不能实例化
    • 接口的属性必须是常量
    • 接口的方法必须是public【默认public】,且不能有函数体
    • 类必须实现接口的所有方法
    • 一个类可以同时实现多个接口,用逗号隔开
    • 接口可以继承接口【用的少】

    适配器模式

    适配器模式,将截然不同的函数接口封装成统一的API
    如数据库操作有3种:mysql mysqli pdo,可以用适配器统一成一致

    <?php
    //定义接口,
    interface Itface{
        function connect($host, $user, $passwd, $dbname);
        function query($sql);
        function close();
    }
    
    //创建类并继承接口
    class Pdos implements Itface{
        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);
        }
    }
    
    class MySQL implements Itface{
        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);
        }
    }
    
    $db = new Pdos();  //在这里轻松切换PDO和MySQL,下面的代码不变仍能达到一致的结果
    $db -> connect('127.0.0.1','root','123456','tp2'); 
    $arr=$db->query('select * from ');
    $db->close();
    $res=$arr->fetch_assoc();
    var_dump($res);
    

    3种链接方式的demo

    相关文章

      网友评论

          本文标题:PHP 适配器模式 与 接口

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