PHP反射使用实例和对PHP反射API的中文描述
如果该方法的原型测试($ UID,美元,然后分)我知道它需要从_get美元
复制代码代码如下所示:
美元美元'uid_get UID = { };
得分= { 'score美元美元_get};
然后调用方法$ obj ->测试($ UID,$分)
当然,前提是参数的名称是一致的,get方法传递值变量的名称是一致的。
通过使用PHP的反射API获得函数参数名称和参数的默认值的方法如下:
复制代码代码如下所示:
< PHP
class TestClass {
公共功能testfunc($参数,param2美元= 0){
}
}
$方法=新反射('testclass ','testfunc);
$params = $方法——>得到相机的参数();
foreach($params达参数){
echo'param名称:'。$参数-> getName(),;
如果($参数->选择()){
echo'default值:。$参数-> getdefaultvalue(),;
}
}
下面是PHP反射API的介绍:
1。使用:
此扩展分析PHP程序,派生或提取关于类、方法、属性、参数等的详细信息,包括注释。
反射可以说是对PHP库函数的扩展:类/对象类/对象对象函数。
它主要用于通过程序对现有PHP程序中的类、方法等信息进行检测和处理。
2,API概述:
复制代码代码如下所示:
类反射{ }
接口反射器{ }
类reflectionexception延伸例外{ }
类reflectionfunction实现反射{ }
类reflectionparameter实现反射{ }
类反射延伸reflectionfunction { }
类reflectionclass实现反射{ }
类reflectionobject延伸reflectionclass { }
类reflectionproperty实现反射{ }
类reflectionextension实现反射{ }
3,详细描述:(示例在PHP手册中详细说明)
复制代码代码如下所示:
(1)反射类
< PHP
类反射
{
公共静态混合出口(反射R {,返回bool })
详细信息/派生一个类或方法
公共静态数组getmodifiernames(int修饰)
获取名称修饰符
}
>
reflectionexception类
这个类继承标准类,而不需要特殊的方法和属性。
reflectionfunction类
< PHP
类reflectionfunction实现反射镜
{
私人最终__clone()
公共对象__construct(String name)
Public string __toString ()
公共静态字符串导出()
关于出口功能的详细信息/
公共字符串getName()
获取函数名
public bool是()
测试系统内部功能
public bool isuserdefined()
来测试用户定义函数是否
作用:取文件名(字符串)
获取文件名,包括路径名
getstartline public int()
获取行定义函数
getendline public int()
获取/结束行定义函数
公共字符串getdoccomment()
获取函数注释
公共getstaticvariables(阵列)
获取静态变量
公共混合调用(混合*参数)
用参数列表调用函数参数
公共混合invokeargs(数组参数)
调用函数,传递数组参数
public bool returnsreference()
测试函数是否返回引用。
公共reflectionparameter { }得到相机的参数()
所需的参数这个方法返回一个对象数组。
getnumberofparameters public int()
获取方法所需的参数数
getnumberofrequiredparameters public int()
获取方法所需的参数数
}
>
(4)reflectionparameter类:
< PHP
类reflectionparameter实现反射镜
{
私人最终__clone()
公共对象__construct(String name)
公共字符串__tostring()
公共静态字符串导出()
参数导出的详细信息
公共字符串getName()
获取参数名
public bool ispassedbyreference()
测试参数是否通过引用传递参数
市民ReflectionClass getClass()
如果参数对象返回对象的名称。
public bool ISArray()
测试参数是否是数组类型。
public bool allowsnull()
测试参数允许为空。
public bool是可选的()
当默认参数是可选时,此参数是可选的测试。
public bool isdefaultvalueavailable()
测试参数是否为默认参数
公共getdefaultvalue(混合)
参数的默认值
}
>
(5)reflectionclass类:
< PHP
类reflectionclass实现反射镜
{
私人最终__clone()
公共对象__construct(String name)
公共字符串__tostring()
公共静态字符串导出()
类/导出的详细信息
公共字符串getName()
获取类或接口名
public bool是()
测试类系统/内部类
public bool isuserdefined()
测试是否为用户自定义类。
public bool isinstantiable()
来测试类是否实例化了。
public bool hasconstant(String name)
如果类具有特定的常数
public bool hasmethod(String name)
如果类具有特定的测试方法
public bool hasproperty(String name)
测试类属性。
作用:取文件名(字符串)
获取类文件名,包括路径名
getstartline public int()
开始/类定义
getendline public int()
类定义的结尾
公共字符串getdoccomment()
评论发表了/
公共getconstructor(反射波法)
获取类构造函数的信息
公共反射getMethod(String name)
获取关于类的特定方法的信息
公共反射getMethods(){ }
获取类的所有信息/方法
公共reflectionproperty getProperty(String name)
实现特定属性信息
公共reflectionproperty getProperties(){ }
获取所有的类属性信息
公共getconstants(阵列)
所有常量/信息的类
公共混合getconstant(String name)
获取特定的信息常量
公共reflectionclass getinterfaces(){ }
获取接口信息
public bool isinterface()
测试类接口是否为
public bool是抽象的()
测试该类是否为抽象类。
公共布尔不是()
测试是否声明为最终类。
getmodifiers public int()
获取类修饰符,返回类型可能是资源类型。
通过反思::getmodifiernames / /($类-> getmodifiers)(延伸阅读)
public bool isinstance(stdClass对象)
测试传入的对象是否为类的实例。
公共stdClass newInstance(混合*参数)
创建类的实例
市民ReflectionClass getParentClass()
获取父类
public bool issubclassof(reflectionclass类)
测试 / /是否传入类的父类
公共getstaticproperties(阵列)
获取类的所有静态属性
公共混合getstaticpropertyvalue(String name {,}混合默认)
如果私有不可访问,则该类的静态属性获得值。
Public void setStaticPropertyValue (string name, mixed value)
设置类值的静态属性,如果私有不可访问,与封装原则相反
公共getdefaultproperties(阵列)
在没有静态属性的情况下获取类的属性信息
public bool isiterateable()
public bool implementsinterface(String name)
测试是否实现了特定的接口。
公共reflectionextension getextension()
公共字符串getextensionname()
}
>
类的反射:
< PHP
类反射reflectionfunction延伸
{
公共__construct(混合班的名字)
公共字符串__tostring()
公共静态字符串导出()
信息方法/
(stdClass对象调用公共混合,混合*参数)
调用方法
公共混合invokeargs(stdClass对象,数组参数)
调用方法,多参数传输
公共布尔不是()
测试是否为最后的
public bool是抽象的()
测试是否为抽象/ /
public bool为()
要测试是否为公共 /
public bool计划()
来测试是否为私有 /
为保护公众()
测试受保护的方法是否为
public bool是静止的()
来测试是否为静态
public bool isconstructor()
是否对测试构造函数进行了测试
public bool isdestructor()
测试/析构函数的方法是否
getmodifiers public int()
此方法具有 /修饰符
市民ReflectionClass getDeclaringClass()
使方法类
从reflectionfunction / /继承
私人最终__clone()
公共字符串getName()
public bool是()
public bool isuserdefined()
作用:取文件名(字符串)
getstartline public int()
getendline public int()
公共字符串getdoccomment()
公共getstaticvariables(阵列)
public bool returnsreference()
公共reflectionparameter { }得到相机的参数()
getnumberofparameters public int()
getnumberofrequiredparameters public int()
}
>
的reflectionproperty类:
< PHP
类reflectionproperty实现反射镜
{
私人最终__clone()
公共__construct(混合班的名字)
公共字符串__tostring()
公共静态字符串导出()
属性/导出的详细信息
公共字符串getName()
属性名称
public bool为()
属性名称为:测试公开
public bool计划()
属性的名称是
为保护公众()
属性名称是测试保护的。
public bool是静止的()
属性名称是:测试静态
public bool isdefault()
getmodifiers public int()
获取修饰符
公共混合getValue(stdClass对象)
获取属性值
public void setValue(stdClass对象,混合值)
设置属性值
市民ReflectionClass getDeclaringClass()
获取/定义这个属性类
公共字符串getdoccomment()
注释的属性
}
>
的reflectionextension类
< PHP
类reflectionextension实现反射{
私人最终__clone()
公共__construct(String name)
公共字符串__tostring()
公共静态字符串导出()
所有信息的扩展
公共字符串getName()
扩展名
公共字符串获取版本()
扩展版本
公共reflectionfunction getfunctions(){ }
获取所有扩展函数
公共getconstants(阵列)
获取所有扩展的常数
公共getinientries(阵列)
让 / /在php.ini中的指令信息的扩张有关
公共reflectionclass getClasses(){ }
公共getclassnames(阵列)
}
>