2010年最新PHP类的精缩归纳(3)
接口实现过程:1、定义接口,2、用..implement X,Y,...和具体类对接。
| interface Info{ //定义接口 const N=22; public function getage(); public function getname(); } class age implements Info //如要多个接口 class age (extends emJob) implements Info,interB... { public $age=15; public $name='Join'; function getage() { echo "年级是$this->age"; } function getname() { echo "姓名是$this->name"; } function getN(){ echo '<h3>在接口中定义的常量N的值是:'.$this::N.' </h3>'; //直接继承接口中的常量值。 } } $age=new age; echo $age::N; //22,直接调用接口中的常量值。 $age->getN(); |
关于抽象类和接口类的使用区分:何时用接口,何时用抽象?
1、相关性:当创建的模型由一些紧密相关的对象采用时,用抽象。对于不相关对象采用的功能,用接口。
2、多重继承:PHP类可以继承多个接口,但不能扩展多个抽象类。
3、公共行为实现:抽象类可在其中实现公共的方法,但接口不行。
四、命名空间(PHP6)
类库脚本A.inc.php和脚本B.inc.php中都一个类的名称为 class CNAME,并且这两个文件要在同一个文件如index.php中被调用。这时要用到命名空间。
步聚:
1、打开上面的A和B两个文件,分别在上面的最前面各加一行:
namespace SPACEA; 和 namespace SPACEB; 名字自定。
2、在index.php中实例化类时,在类的前面添加命名空间和双冒号做为前缀:
| include 'a.inc.php'; include 'b.inc.php'; $a=new SPACEA::CNAME(); $b=new SPACEB::CNAME(); |
这样就不会冲突了。
但在PHP6正式发布前,这个功能还未定下来。
五、实现迭代器和迭代。
参《PHP圣经》P142;
六、使用Reflection(反射)API 。
简易实例:
| class a{ .... } $c = new ReflectionClass('a'); //PHP 内置类。 echo '<pre>'.$c.'</pre>'; |
输出类a的结构和内容。参《PHP圣经》P145;
顶(0)
踩(0)
- 最新评论
