php反射机制
PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。
反射是什么?
它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方
法的功能称为反射API。反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。
其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言。
php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。
反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射。
thinkphp框架App.class.php文件里的exec中有用到PHP反射。
具体包含的类和实例可参照手册:函数参考》变量与类型相关扩展》反射:
- Reflection — Reflection 类
- Reflection::export — Exports
- Reflection::getModifierNames — 获取修饰符的名称
- ReflectionClass — ReflectionClass 类
- ReflectionClass::__construct — 构造一个 ReflectionClass 类
- ReflectionClass::export — 导出一个类
- ReflectionClass::getConstant — 获取定义过的一个常量
- ReflectionClass::getConstants — 获取一组常量
- ReflectionClass::getConstructor — 获取类的构造函数
- ReflectionClass::getDefaultProperties — 获取默认属性
- ReflectionClass::getDocComment — 获取文档注释
- ReflectionClass::getEndLine — 获取最后一行的行数
- ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象
- ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称
- ReflectionClass::getFileName — 获取定义类的文件名
- ReflectionClass::getInterfaceNames — 获取接口(interface)名称
- ReflectionClass::getInterfaces — 获取接口
- ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。
- ReflectionClass::getMethods — 获取方法的数组
- ReflectionClass::getModifiers — 获取修饰符
- ReflectionClass::getName — 获取类名
- ReflectionClass::getNamespaceName — 获取命名空间的名称
- ReflectionClass::getParentClass — 获取父类
- ReflectionClass::getProperties — 获取一组属性
- ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty
- ReflectionClass::getShortName — 获取短名
- ReflectionClass::getStartLine — 获取起始行号
- ReflectionClass::getStaticProperties — 获取静态(static)属性
- ReflectionClass::getStaticPropertyValue — 获取静态(static)属性的值
- ReflectionClass::getTraitAliases — 返回 trait 别名的一个数组
- ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组
- ReflectionClass::getTraits — 返回这个类所使用的 traits 数组
- ReflectionClass::hasConstant — 检查常量是否已经定义
- ReflectionClass::hasMethod — 检查方法是否已定义
- ReflectionClass::hasProperty — 检查属性是否已定义
- ReflectionClass::implementsInterface — 接口的实现
- ReflectionClass::inNamespace — 检查是否位于命名空间中
- ReflectionClass::isAbstract — 检查类是否是抽象类(abstract)
- ReflectionClass::isCloneable — 返回了一个类是否可复制
- ReflectionClass::isFinal — 检查类是否声明为 final
- ReflectionClass::isInstance — 检查类的实例
- ReflectionClass::isInstantiable — 检查类是否可实例化
- ReflectionClass::isInterface — 检查类是否是一个接口(interface)
- ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义
- ReflectionClass::isIterateable — 检查是否可迭代(iterateable)
- ReflectionClass::isSubclassOf — 检查是否为一个子类
- ReflectionClass::isTrait — 返回了是否为一个 trait
- ReflectionClass::isUserDefined — 检查是否由用户定义的
- ReflectionClass::newInstance — 从指定的参数创建一个新的类实例
- ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例。
- ReflectionClass::newInstanceWithoutConstructor — 创建一个新的类实例而不调用它的构造函数
- ReflectionClass::setStaticPropertyValue — 设置静态属性的值
- ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式。
- ReflectionZendExtension — ReflectionZendExtension 类
- ReflectionZendExtension::__clone — Clone handler
- ReflectionZendExtension::__construct — Constructor
- ReflectionZendExtension::export — Export
- ReflectionZendExtension::getAuthor — Gets author
- ReflectionZendExtension::getCopyright — Gets copyright
- ReflectionZendExtension::getName — Gets name
- ReflectionZendExtension::getURL — Gets URL
- ReflectionZendExtension::getVersion — Gets version
- ReflectionZendExtension::__toString — To string handler
- ReflectionExtension — ReflectionExtension 类
- ReflectionExtension::__clone — Clones
- ReflectionExtension::__construct — Constructs a ReflectionExtension
- ReflectionExtension::export — Export
- ReflectionExtension::getClasses — Gets classes
- ReflectionExtension::getClassNames — Gets class names
- ReflectionExtension::getConstants — Gets constants
- ReflectionExtension::getDependencies — Gets dependencies
- ReflectionExtension::getFunctions — Gets extension functions
- ReflectionExtension::getINIEntries — Gets extension ini entries
- ReflectionExtension::getName — Gets extension name
- ReflectionExtension::getVersion — Gets extension version
- ReflectionExtension::info — Print extension info
- ReflectionExtension::isPersistent — Returns whether this extension is persistent
- ReflectionExtension::isTemporary — Returns whether this extension is temporary
- ReflectionExtension::__toString — To string
- ReflectionFunction — ReflectionFunction 类
- ReflectionFunction::__construct — Constructs a ReflectionFunction object
- ReflectionFunction::export — Exports function
- ReflectionFunction::getClosure — Returns a dynamically created closure for the function
- ReflectionFunction::invoke — Invokes function
- ReflectionFunction::invokeArgs — Invokes function args
- ReflectionFunction::isDisabled — Checks if function is disabled
- ReflectionFunction::__toString — To string
- ReflectionFunctionAbstract — ReflectionFunctionAbstract 类
- ReflectionFunctionAbstract::__clone — 复制函数
- ReflectionFunctionAbstract::getClosureScopeClass — Returns the scope associated to the closure
- ReflectionFunctionAbstract::getClosureThis — 返回本身的匿名函数
- ReflectionFunctionAbstract::getDocComment — 获取注释内容
- ReflectionFunctionAbstract::getEndLine — 获取结束行号
- ReflectionFunctionAbstract::getExtension — 获取扩展信息
- ReflectionFunctionAbstract::getExtensionName — 获取扩展名称
- ReflectionFunctionAbstract::getFileName — 获取文件名称
- ReflectionFunctionAbstract::getName — 获取函数名称
- ReflectionFunctionAbstract::getNamespaceName — 获取命名空间
- ReflectionFunctionAbstract::getNumberOfParameters — 获取参数数目
- ReflectionFunctionAbstract::getNumberOfRequiredParameters — 获取必须输入参数个数
- ReflectionFunctionAbstract::getParameters — 获取参数
- ReflectionFunctionAbstract::getShortName — 获取函数短名称
- ReflectionFunctionAbstract::getStartLine — 获取开始行号
- ReflectionFunctionAbstract::getStaticVariables — 获取静态变量
- ReflectionFunctionAbstract::inNamespace — 检查是否处于命名空间
- ReflectionFunctionAbstract::isClosure — 检查是否是匿名函数
- ReflectionFunctionAbstract::isDeprecated — 检查是否已经弃用
- ReflectionFunctionAbstract::isGenerator — 判断函数是否是一个生成器函数
- ReflectionFunctionAbstract::isInternal — 判断函数是否是内置函数
- ReflectionFunctionAbstract::isUserDefined — 检查是否是用户定义
- ReflectionFunctionAbstract::returnsReference — 检查是否返回参考信息
- ReflectionFunctionAbstract::__toString — 字符串化
- ReflectionMethod — ReflectionMethod 类
- ReflectionMethod::__construct — ReflectionMethod 的构造函数
- ReflectionMethod::export — 输出一个回调方法
- ReflectionMethod::getClosure — 返回一个动态建立的方法调用接口,译者注:可以使用这个返回值直接调用非公开方法。
- ReflectionMethod::getDeclaringClass — 获取反射函数调用参数的类表达
- ReflectionMethod::getModifiers — 获取方法的修饰符
- ReflectionMethod::getPrototype — 返回方法原型 (如果存在)
- ReflectionMethod::invoke — Invoke
- ReflectionMethod::invokeArgs — 带参数执行
- ReflectionMethod::isAbstract — 判断方法是否是抽象方法
- ReflectionMethod::isConstructor — 判断方法是否是构造方法
- ReflectionMethod::isDestructor — 判断方法是否是析构方法
- ReflectionMethod::isFinal — 判断方法是否定义 final
- ReflectionMethod::isPrivate — 判断方法是否是私有方法
- ReflectionMethod::isProtected — 判断方法是否是保护方法 (protected)
- ReflectionMethod::isPublic — 判断方法是否是公开方法
- ReflectionMethod::isStatic — 判断方法是否是静态方法
- ReflectionMethod::setAccessible — 设置方法是否访问
- ReflectionMethod::__toString — 返回反射方法对象的字符串表达
- ReflectionObject — ReflectionObject 类
- ReflectionObject::__construct — Constructs a ReflectionObject
- ReflectionObject::export — Export
- ReflectionParameter — ReflectionParameter 类
- ReflectionParameter::allowsNull — Checks if null is allowed
- ReflectionParameter::canBePassedByValue — Returns whether this parameter can be passed by value
- ReflectionParameter::__clone — Clone
- ReflectionParameter::__construct — Construct
- ReflectionParameter::export — Exports
- ReflectionParameter::getClass — Get the type hinted class
- ReflectionParameter::getDeclaringClass — Gets declaring class
- ReflectionParameter::getDeclaringFunction — Gets declaring function
- ReflectionParameter::getDefaultValue — Gets default parameter value
- ReflectionParameter::getDefaultValueConstantName — Returns the default value's constant name if default value is constant or null
- ReflectionParameter::getName — Gets parameter name
- ReflectionParameter::getPosition — Gets parameter position
- ReflectionParameter::isArray — Checks if parameter expects an array
- ReflectionParameter::isCallable — Returns whether parameter MUST be callable
- ReflectionParameter::isDefaultValueAvailable — Checks if a default value is available
- ReflectionParameter::isDefaultValueConstant — Returns whether the default value of this parameter is constant
- ReflectionParameter::isOptional — Checks if optional
- ReflectionParameter::isPassedByReference — Checks if passed by reference
- ReflectionParameter::__toString — To string
- ReflectionProperty — ReflectionProperty 类
- ReflectionProperty::__clone — Clone
- ReflectionProperty::__construct — Construct a ReflectionProperty object
- ReflectionProperty::export — Export
- ReflectionProperty::getDeclaringClass — Gets declaring class
- ReflectionProperty::getDocComment — Gets doc comment
- ReflectionProperty::getModifiers — Gets modifiers
- ReflectionProperty::getName — Gets property name
- ReflectionProperty::getValue — Gets value
- ReflectionProperty::isDefault — Checks if default value
- ReflectionProperty::isPrivate — Checks if property is private
- ReflectionProperty::isProtected — Checks if property is protected
- ReflectionProperty::isPublic — Checks if property is public
- ReflectionProperty::isStatic — Checks if property is static
- ReflectionProperty::setAccessible — Set property accessibility
- ReflectionProperty::setValue — Set property value
- ReflectionProperty::__toString — To string
- Reflector — Reflector 接口
- Reflector::export — Exports
- Reflector::__toString — 转化成字符串
- ReflectionException — ReflectionException 类
php反射机制的更多相关文章
- Java学习之反射机制及应用场景
前言: 最近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,既然用到了就想着好好学习总结一下,其实无论是之前的EventBus 2.x版本还是Retrofit.早期的View注解框 ...
- 第28章 java反射机制
java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- Java反射机制
Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射: 静态编译:在编译时确定类型,绑定对象,即通过 ...
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- java基础知识(十一)java反射机制(下)
1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...
- c#反射机制
一:反射的定义 审查元数据并收集关于它的类型信息的能力.元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等. Sys ...
- java反射学习之一反射机制概述
一.反射机制背景概述 1.反射(reflection)是java被视为动态语言的一个关键性质 2.反射机制指的是程序在运行时能获取任何类的内部所有信息 二.反射机制实现功能概述 1.只要给定类的全名, ...
- Java中的反射机制
Java反射机制 反射机制定义 反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许其对内部成员进行操作.由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的 ...
- C#反射机制 (转载)
转载:原文出处 http://www.cnblogs.com/binfire/archive/2013/01/17/2864887.html 一:反射的定义 审查元数据并收集关于它的类型信息 ...
随机推荐
- Servlet生命周期及工作原理
1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方 ...
- angular学习的一些小笔记(中)之directive
directive里面的几个配置,上代码就清晰了 <!DOCTYPE html> <html ng-app='app'> <head> <meta chars ...
- C#如何在DataGridViewCell中自定义脚本编辑器
上一篇博文探讨了如何自定义DataGridViewColumn实现一个TreeViewColumn来在DataGridView控件中显示TreeView控件,其实我们还可以继续发挥想象,自定义其他的列 ...
- Soundslice – 美妙乐谱!Web 技术高大上的应用
Web 技术的不断发展让我们能够开发各种好玩的功能.这里给大家分享一个使用 HTML5 技术实现的在线乐谱,可以播放的哦,也可以选择一个片段进行循环播放.赶紧来体验一下:) 您可能感兴趣的相关文章 1 ...
- windows 80 端口占用
1. cmd 2. regidit 3. 注册表 KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP'右边有一个'start'的DWORD ...
- Icon Font浅谈
这周继续在弄hybird app 的 UI框架的重构,进行到了编写换肤功能的阶段,而在做换肤之前,我想应该先弄一套框架内置的图标. 而图标无非就是两种做法: 1.图片 使用图片很正常,但是有缺陷的. ...
- HTML <fieldset> 标签将表单内的相关元素分组
<fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边 ...
- 关于sharepoint2013的SPUtility.GetGenericSetupPath()方法过期解决办法
有个时候需要读取layouts下的xml文件,因此需要知道路径,以前在SP2010用的SPUtility.GetGenericSetupPath()方法获取.现在SP2013提示过期否决 看2个结构分 ...
- Phonegap之ios对iPhone6和Plus的闪屏适配 -- xmTan
故事的发生起于,由于老板强烈要求app在iPhone6和5有一样的工具栏,然后前端妹子用@media为iPhone6和Plus做了样式适配.然后问题来了,竟然奇葩的发现@media样式只对iPhone ...
- 深入浅出-iOS程序性能优化 (转载)
iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象. iOS应用是非常注重用户体验的,不光是要求 ...