快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

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)

您可能还会对下面的文章感兴趣:

最新评论