PHP设计模式--适配器

winterSky 2018-09-14 PM 1053℃ 0条

//适配器模式,可以将截然不容的函数接口封装成统一的API。通俗的理解就是将不同接口适配成统一的API接口,使得原本不兼容的接口能够一起工作。
 
//在不同适配中,具体函数操作不一样,但接口一致
interface IDatabase
{
   function connect($host,$user,$passwd,$dbname);
 
   function query($sql);
 
   function close();
}
 
//下面定义一个用mysql操作数据库的类
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进行数据库操作
 
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)
     {
         $res = mysqli_query($this->conn,$sql);
         return $res;
 
      }
 
      function close()
      {
         mysqli_close($this->conn);
       }
 
}
 
//同理,用pdo进行数据库操作
 
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;)
        }
}
 
//当选择Mysql类操作时
$db = new Mysql();
$db->connect('localhost','root','root','test');
$db->query($sql);
标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~