问答详情
源自:6-1 [php]适配器模式

在大话PHP设计模式中,这第六章讲的真的是适配器吗? 我自己参照网上写了一个Mysql的适配器, 请大神帮看看是不是适配器模式的...

<?php

class MysqlAdapter{
   protected $host;
   protected $uname;
   protected $passwd;
   protected $dbname;

   public function __construct($host,$uname, $passwd, $dbname)
   {
       $this->host = $host;        $this->uname=$uname;
       $this->passwd = $passwd;       $this->dbname=$dbname;
   }

   public function Adapt($adaptee){
       return new $adaptee($this->host,$this->uname, $this->passwd, $this->dbname);
   }

}

class MysqlAdaptee {
   protected $link;
   function __construct($host, $username, $password, $databaseName)
   {
       $conn = mysqli_connect($host, $username, $password, $databaseName);
       $this->link = $conn;
       if($this->link) echo "Login success!";
       else echo "Login failed!";

   }
   function query($sql)
   {
       return mysqli_query($this->link, $sql);

   }
   function close()
   {
       mysqli_close($this->link);
   }
}

$MysqlAdapter = new MysqlAdapter("localhost","root","123456","test");
$link = $MysqlAdapter->Adapt(MysqlAdaptee::class);

$result = $link->query("show databases");
$data = mysqli_fetch_all($result);
var_dump($data);

提问者:Darkspirit暗灵 2017-08-04 13:15

个回答

  • Evcehiack
    2017-08-08 20:35:01

    适配器的概念你可能没有理解 ,举个简单的例子,session的缓存 可以由 file mysql redis memcache 多种实现,但是为了session的操作 无非 set get ,适配器是定制一套统一的操作方法,由底层去实现 即为适配器