用户登录

很多支持面向对象的语言里面都支持接口这个概念,英文是 interface ... 在面向对象这个情境下面,接口有点像是一个合同。也就是,我们可以定义接口,在这个接口里,可以定义一些空白的方法。

然后在其它的类里面,可以去实施这个接口,在实施的时候必须要在类里面,包含所有在接口上定义的方法,这有点像是跟这个接口签订了合同,实施它的类,必须都要遵守这个合同。

下面,我们去定义两个接口 ... 然后让一个类去实施它们。

定义接口用的是 interface 这个关键词 ... 后面是接口的名称 ... DataInterface ... 在这个接口里,可以去定义一些让实施它的类必须要定义的方法 ... public function get_data();

interface DataInterface {
public function get_data();
}

用类似的方法, 我们再去定义一个接口 ... interface ... 这个接口叫它 EntityInterface ... 里面也包含一个方法 ... get_entity_type ... 注意,在接口里的方法必须是空白的,也就是不能包含方法的主体 ... 这跟抽象方法有点像 ...

interface EntityInterface {
public function get_entity_type();
}

下面,我们可以再去定义一个类,然后让这个类去跟这两个接口签个合同 ... 也就是去实施它们 .. class Entity ... 后面加上关键词 implements ... 接着是实施的接口的名称 ... 先输入 DataInterface ... 如果在这个类里还需要实施其它的接口 ... 可以用一个逗号分隔一下 ... EntityInterface ...

下面,我们可以看一下如果不在这个类里面去定义接口上的方法,会发生什么 ... 保存 ... 回到浏览器 ...

会出现一个错误提示 .. 意思就是,你需要在 Entity 这个类里面去定义它所实施的接口里面的方法 ...

回到 index.php ... 先定义一下在 DataInterface 这个接口里面的 get_data 这个方法 ...

public function get_data() {
return '数据...';
}

然后再去定义在 EntityInterface 这个接口里面的 get_entity_type 这个方法 ...

public function get_entity_type() {
return '类型...';
}

保存 .. 回到浏览器 ... 现在就不会显示错误了 ...

instanceof

再回到 index.php ... 使用 instanceof ,可以去判断一个对象是否属于某个指定的类。先去创建一个 Entity 对象的实例 ..

$entity = new Entity();

然后去判断一下 entity 属不属于 Entity 这个类 .. 也就是 entity 是否是 Entity 这个类的一个实例 ... 我们可以把结果输出使用 var_dump 输出到屏幕上.. 同样,我们可以再去判断一下 entity 这个对象,是不是 EntityInterface 还有 DataInterface 的实例 ...

var_dump($entity instanceof Entity);
var_dump($entity instanceof EntityInterface);
var_dump($entity instanceof DataInterface);

保存 ... 回到浏览器 ...

你会看到,三个结果都是 ture ... 也就是说 entity 这个对象即属于 Entity 这个类的实例,因为 Entity 这个类实施了 EntityInterface ,还有 DataInterface 接口 ... 所以它的实例也会被认为是这些接口的实例。

接口- Interface《 PHP 面向对象 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点