线上服务咨询
PHP反射api应为
发表时间:2019-07-30 16:17:56
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
理解反思
它指的是PHP程序在PHP运行状态下的扩展分析,导出或提取有关类,方法,属性,参数甚至注释的详细信息。这种动态获取的信息和动态调用对象的能力称为反射API。 Reflection是一种在面向对象模型中操作元模型的API。它非常强大,可以帮助我们构建复杂,可扩展的应用程序。 (ps:包含在工厂模式中)
Reflection API是一个php内置的oop技术扩展,包括类,异常和接口,可用于帮助我们分析其他类,接口,方法,属性和扩展。这些oop扩展称为反射。
ReflectionClass
[PHP]
ReflectionClass类实现了Reflector
{
最终私人__clone()
公共对象__construct(字符串名称)
公共字符串__toString()
公共静态字符串导出()
//导出类的详细信息
公共字符串getName()
//获取类名或接口名称
公共bool isInternal()
//测试该类是否是系统内部类
public bool isUserDefined()
//测试类是否是用户定义的类
public bool isInstantiable()
//测试类是否已实例化
public bool hasConstant(string name)
//测试类是否具有特定常量
public bool hasMethod(string name)
//测试类是否有特定的方法
公共bool hasProperty(字符串名称)
//测试类是否具有特定属性
公共字符串getFileName()
//获取定义类的文件名,包括路径名
Public int getStartLine()
//获取定义类
的起始行Public int getEndLine()
//获取定义类
的结束行公共字符串getDocComment()
//获取此类的注释
Public ReflectionMethod getConstructor()
//获取此类的构造函数信息
Public ReflectionMethod getMethod(string name)
//获取类的具体方法信息
Public ReflectionMethod [] getMethods()
//获取该类的所有方法信息
Public ReflectionProperty getProperty(字符串名称)
//获取特定的属性信息
Public ReflectionProperty [] getProperties()
//获取类的所有属性信息
公共数组getConstants()
//获取该类的所有常量信息
公共混合getConstant(字符串名称)
//获取该类的具体常量信息
Public ReflectionClass [] getInterfaces()
//获取接口类信息
public bool isInterface()
//测试类是否是接口
公共bool isAbstract()
//测试该类是否为抽象类
public bool isFinal()
//测试该类是否被声明为final
Public int getModifiers()
//获取类的修饰符,返回值类型可以是资源类型
//通过Reflection:进一步阅读: getModifierNames($ class-> getModifiers())
public bool isInstance(stdclass object)
//测试传入对象是否是类的实例
public stdclass newInstance(mixed * args)
//创建此类的实例
Public ReflectionClass getParentClass()
//获取父类
public bool isSubclassOf(ReflectionClass class)
//测试传递的类是否是类的父类
公共数组getStaticProperties()
//获取类的所有静态属性
公共混合getStaticPropertyValue(字符串名称[,默认混合])
//获取类的静态属性值,如果是私有的,则无法访问
Public void setStaticPropertyValue(string name,mixed value)
//设置类的静态属性值,如果是私有的,则无法访问,有包装原则
公共数组getDefaultProperties()
//获取类的属性信息,没有静态属性
公共bool isIterateable()
public bool implementsInterface(string name)
//测试是否实现了特定的接口
Public ReflectionExtension getExtension()
公共字符串getExtensionName()
}
?>
工厂模式应用:
[PHP]
类MoveDataFactory
{
/**
*描述:简单工厂模式,根据模式选择不同的实例化对象
* @return对象实例
*/
公共函数GetMoveClass($ classname)
{
$ reflectionclass=new ReflectionClass($ classname);
返回$ reflectionclass-> newInstance();
}
}
网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制