Php design mode adapter mode, php design mode
Adapter mode. Different function interfaces can be encapsulated into a unified API;
For example, PHP database operations include Mysql, Mysqli, and pdo. You can use the adapter mode for consistency. In similar scenarios, you can also use the cache adapter to convert memcache, redis, file, different cache functions such as apc are consistent.
IDatabase. php
<?phpnamespace Baobab;interface IDatabase{ function connect($host, $user, $passwd, $dbname); function query($sql); function fetch_result($result); function close();}
Mysqli. php
<?phpnamespace Baobab\Database;use Baobab\IDatabase;class Mysqli implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname){ $conn = mysqli_connect($host, $user, $passwd, $dbname); mysqli_set_charset($conn, 'utf8'); $this->conn = $conn; } function query($sql) { return mysqli_query($this->conn, $sql); } function fetch_result($result){ return mysqli_fetch_all($result); } function close() { mysqli_close($this->conn); }}
Pdo. php
<?phpnamespace Baobab\Database;use Baobab\IDatabase;class Pdo implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname){ $conn = new \PDO("mysql:dbname=$dbname;host=$host", $user, $passwd); $this->conn = $conn; } function query($sql){ return $this->conn->query($sql); } function fetch_result($result){ } function close() { unset($this->conn); }}
Index. php
$db = new Baobab\Database\Mysqli();$db->connect('127.0.0.1', 'root', '', 'test');$res = $db->query('select * from ha_cl');print_r($db->fetch_result($res));$db->close();