反射是 php 提供的一系列可以分析类的属性、方法和参数的的内置类。在某些功能上和 php 的一些内置函数功能类似,但是不同的是他能和 php 的一些高级特性使用,而且比函数有更高的灵活性,部分常用的反射类如下:
类 | 描述 |
---|---|
Reflection | 为类的摘要信息提供静态函数 export() |
RefelectionClass | 类的信息和工具 |
RefelectionMethod | 类方法信息和工具 |
RefelectionParameter | 方法参数信息 |
RefelectionProperty | 类属性信息和工具 |
RefelectionExtension | php 扩展信息 |
RefelectionException | 错误类 |
常用的反射类功能集锦
Reflection 类
Reflection 类提供了一个静态的方法 export(),他接受一个类的实例为参数来生成类的摘要信息。
php
public static export(Reflector r [,bool return])//打印类或方法的详细信息
public static getModifierNames(int modifiers) //取得修饰符的名字
ReflectionMethod 类
RefelectionMethod 提供了一些列的方法用于分析类的方法的一系列属性
php
public static string export() //打印该方法的信息
public mixed invoke(stdclass object, mixed* args) //调用对应的方法
public mixed invokeArgs(stdclass object, array args)//调用对应的方法,传多参数
public bool isFinal() //方法是否为final
public bool isAbstract() //方法是否为abstract
public bool isPublic() //方法是否为public
public bool isPrivate() //方法是否为private
public bool isProtected() //方法是否为protected
public bool isStatic() //方法是否为static
public bool isConstructor() //方法是否为构造函数
public void setAccessable() //通过这个设置,你可以访问一些私有的方法
ReflectionClass 类
RefelectionClass,他接受一个类名为参数,并提供了一系列的方法获取类的信息。
php
public static string export() //打印类的详细信息
public string getName() //取得类名或接口名
public bool isInternal() //类是否为系统内部类
public bool isUserDefined() //类是否为用户自定义类
public bool isInstantiable() //类是否被实例化过
public bool hasMethod(string name) //类是否有特定的方法
public bool hasProperty(string name)//类是否有特定的属性
public string getFileName() //获取定义该类的文件名,包括路径名
public int getStartLine() //获取定义该类的开始行
public int getEndLine() //获取定义该类的结束行
public string getDocComment() //获取该类的注释
public ReflectionMethod getConstructor() //取得该类的构造函数信息
public ReflectionMethod getMethod(string name) //取得该类的某个特定的方法信息
public ReflectionMethod[] getMethods() //取得该类的所有的方法信息
public ReflectionProperty getProperty(string name) //取得某个特定的属性信息
public ReflectionProperty[] getProperties() //取得该类的所有属性信息
public array getConstants() //取得该类所有常量信息
public mixed getConstant(string name) //取得该类特定常量信息
public ReflectionClass[] getInterfaces() //取得接口类信息
public bool isInterface() //测试该类是否为接口
public bool isAbstract() //测试该类是否为抽象类
ReflectionParameter 类
php
public static string export() //导出该参数的详细信息
public string getName() //取得参数名
public bool isPassedByReference() //测试该参数是否通过引用传递参数
public ReflectionClass getClass() //若该参数为对象,返回该对象的类名
public bool isArray() //测试该参数是否为数组类型
public bool allowsNull() //测试该参数是否允许为空
public bool isOptional() //测试该参数是否为可选的,当有默认参数时可选
public bool isDefaultValueAvailable() //测试该参数是否为默认参数
public mixed getDefaultValue() //取得该参数的默认值
ReflectionExtension 类
php
public static export() //导出该扩展的所有信息
public string getName() //取得该扩展的名字
public string getVersion() //取得该扩展的版本
public ReflectionFunction[] getFunctions() //取得该扩展的所有函数
public array getConstants() //取得该扩展的所有常量
public array getINIEntries() //取得与该扩展相关的,在php.ini中的指令信息