接口
什么时候用接口?
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);
网友评论