这两天在看一些关于PHP接口方面的资料,总结如下:
一、接口的定义和作用:
1、定义:接口规定了那些实现它的类,是抽象类的实体,其方法必须被全部实现。
使用方法如下:
working(); } $a = new teacher(); $b = new coder(); print_object($a); print_object($b); ?>2、作用:接口起强制规范和契约的作用,不允许调用接口中本不存在的方法。接口的编写和实现可以分开。
二、PHP的接口
php是弱类型语言,强调灵活,不推荐大规模使用接口,因为PHP的接口失去了一些接口应该有的特性,比如PHP只关心是否实现了这个方法,而不关心语义是否正确。
三、一些特例:
Iterator迭代器接口,只要实现了这个接口,就可以使对象用于foreach结构,如DirectoryIterator类。
代码如下:
$dir = new DirectoryIterator(dirname(__FILE__));foreach ($dir as $key => $value) { if(!$value->isDir()){ echo $value->getFileName(),"\t",$value->getSize(),""; }}Trait可以被视为一种加强型的接口。代码如下:
trait Hello{ public function sayHello(){ echo "Hello "; }}trait World{ public function sayWorld(){ echo "World"; }}class MyHelloWorld{ use Hello,World; public function sayExclamationMark(){ echo "!"; }}$myobject = new MyHelloWorld();$myobject->sayHello();$myobject->sayWorld();$myobject->sayExclamationMark();四、总结
接口作为一种规范和契约存在,保证可用性和可控性。
接口是一个声明,使用了该接口就必须实现它。
PHP的接口存在两个不足,一是没有契约限制,二是缺少足够多的内部接口。