PHP反射(反射)使用实例

PHP反射是获取类、扩展、方法、函数、对象、参数、属性的详细信息。

的reflectionclass类中获得类的相关信息,如获得属性、方法、文档注释,等等。


< PHP

类人{

*为了演示,我们正在设置这个私有
* /
私人_allowdynamicattributes美元= false;

类型= primary_autoincrement / * * /
受保护的$ id = 0;

类型= varchar长度= 255 / /零* * *
受保护的$名称;

类型=文本null
受保护的传记;

公共函数getID()
{
返回$;
}
公共功能的压缩文件SetID($ V)
{
$;
}
公共职能getName()
{
返回$这个名称;
}
公共职能setName($ V)
{
$;
}
公共功能getbiography()
{
这是传记;
}
公共功能setbiography($ V)
{
这篇传记;
}
}

派生类
ReflectionClass::出口('person);

$ R =新ReflectionClass('person);

获取所有属性
print_r($ R -> getProperties());


*获得指定的属性
* reflectionproperty::is_static
* reflectionproperty::is_public
* reflectionproperty::is_protected
* reflectionproperty::is_private
* /
print_r($ R -> getProperties(reflectionproperty::is_private));

获取/注释
print_r($ R -> getProperty('id')-> getdoccomment());

获取方法
print_r($ R -> getMethods());





的reflectionextension类用于获取扩展的相关信息


重=新reflectionextension('reflection);
print_r(($重新> getClasses) / /);所有类扩展
print_r(($重> getclassnames)); / /扩展的类的名称

美元reflectionextension('mysql DOM =新的);
print_r(($ DOM -> getconstants)); / /不断扩大
print_r(($ DOM -> getdependencies)); / /这个扩展的依赖
print_r(($ DOM -> getfunctions)); / /扩展方法
print_r($ DOM -> getinientries)(INI); / /扩展信息
print_r(($ DOM -> getName)) / /扩展名;
print_r(($ DOM ->获取版本)); / /扩展版
print_r(($ DOM ->信息)); / /扩展信息
print_r(($ DOM ->持久)); / /持久扩张
print_r(($ DOM ->是暂时的)); / /是一个临时的延伸





reflectionfunction类用户功能相关的信息


RF =新reflectionfunction美元('array_merge);

foreach($射频->得到相机的参数()$项){
回波$项。php_eol;
}




反射类的用户相关信息的获得方法


类人{

公开名称;


*取得人的姓名
* /
公共职能getName()
{
返回$这个名称;
}
公共职能setName($ V)
{
$;
}
}

$ RM =新的反射波法('person ','getname);

print_r($ RM ->为());
print_r($ RM -> getdoccomment());



的reflectionobject类用于获取对象的相关信息




类人{

公开名称;

公共功能__construct($name)
{
这个名字;
}

公共职能getName()
{
返回$这个名称;
}

公共职能setName($ V)
{
$;
}
}

美元=新的人(A);

RO =新reflectionobject美元(美元);

print_r($ RO -> getMethods());



reflectionparameter获取关于一个函数或方法的参数信息。




类人{

公开名称;

公共功能__construct($name)
{
这个名字;
}

公共职能getName()
{
返回$这个名称;
}

公共职能setName($ V)
{
$;
}
}

P =新reflectionparameter(阵列('person ','setname '),0);

print_r(P > getposition()); / / 0
print_r(P > getName()); / / V



reflectionproperty获取关于该类的属性信息。




类人{

测试
公开名称;

公共功能__construct($name)
{
这个名字;
}

公共职能getName()
{
返回$这个名称;
}

公共职能setName($ V)
{
$;
}
}

P =新reflectionproperty('person,'name');

print_r(P > getdoccomment());