1。用途:
扩展分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
reflection可以说是对php库函数:“classes/objects 类/对象函数”的一个扩展。
主要用在通过程序检测现有php程序内部关于类、方法等信息,并做出处理。
2。api概览:
class reflection { }
interface reflector { }
class reflectionexception extends exception { }
class reflectionfunction implements reflector { }
class reflectionparameter implements reflector { }
class reflectionmethod extends reflectionfunction { }
class reflectionclass implements reflector { }
class reflectionobject extends reflectionclass { }
class reflectionproperty implements reflector { }
class reflectionextension implements reflector { }
3。详细说明:(例子详见php手册)
①reflection类
②reflectionexception类
该类继承标准类,没特殊方法和属性。
③reflectionfunction类
④reflectionparameter类:
⑤reflectionclass类:
getmodifiers())进一步读取
public bool isinstance(stdclass object)
//测试传入的对象是否为该类的一个实例
public stdclass newinstance(mixed* args)
//创建该类实例
public reflectionclass getparentclass()
//取得父类
public bool issubclassof(reflectionclass class)
//测试传入的类是否为该类的父类
public array getstaticproperties()
//取得该类的所有静态属性
public mixed getstaticpropertyvalue(string name [, mixed default])
//取得该类的静态属性值,若private,则不可访问
public void setstaticpropertyvalue(string name, mixed value)
//设置该类的静态属性值,若private,则不可访问,有悖封装原则
public array getdefaultproperties()
//取得该类的属性信息,不含静态属性
public bool isiterateable()
public bool implementsinterface(string name)
//测试是否实现了某个特定接口
public reflectionextension getextension()
public string getextensionname()
}
?>
⑥reflectionmethod类:
⑦reflectionproperty类:
⑧reflectionextension类
4。附:
其实从第二点api概览可以看出:接口挺好用的。
一方面reflector接口为reflection小系统提供了一个很好的接口命名规范,
每个实现他的类都须按他的规范,从外部看来,这个小系统api很统一。
另一方面由于很多类实现了reflector接口,
在这样的类层次结构中,若想实现多态是很容易的