文字

反射

  • 简介
  • 安装/配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • 扩展
  • 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::getReturnType — Gets the specified return type of a function
    • ReflectionFunctionAbstract::getShortName — 获取函数短名称
    • ReflectionFunctionAbstract::getStartLine — 获取开始行号
    • ReflectionFunctionAbstract::getStaticVariables — 获取静态变量
    • ReflectionFunctionAbstract::hasReturnType — Checks if the function has a specified return type
    • ReflectionFunctionAbstract::inNamespace — 检查是否处于命名空间
    • ReflectionFunctionAbstract::isClosure — 检查是否是匿名函数
    • ReflectionFunctionAbstract::isDeprecated — 检查是否已经弃用
    • ReflectionFunctionAbstract::isGenerator — 判断函数是否是一个生成器函数
    • ReflectionFunctionAbstract::isInternal — 判断函数是否是内置函数
    • ReflectionFunctionAbstract::isUserDefined — 检查是否是用户定义
    • ReflectionFunctionAbstract::isVariadic — Checks if the function is variadic
    • 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::getType — Gets a parameter's type
    • ReflectionParameter::hasType — Checks if parameter has a type
    • 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::isVariadic — Checks if the parameter is variadic
    • 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 property is a default property
    • 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 类

用户评论:

[#1] Anonymous [2010-08-26 09:19:16]

Here is a code snippet for some of us who are just beginning with reflection. I have a simple class below with two properties and two methods. We will use reflection classes to populate the properties dynamically and then print them:

<?php

class A
{
    public 
$one '';
    public 
$two '';
   
    
//Constructor
    
public function __construct()
    {
        
//Constructor
    
}
   
    
//print variable one
    
public function echoOne()
    {
        echo 
$this->one."\n";
    }

    
//print variable two   
    
public function echoTwo()
    {
        echo 
$this->two."\n";
    }
}

//Instantiate the object
$a = new A();

//Instantiate the reflection object
$reflector = new ReflectionClass('A');

//Now get all the properties from class A in to $properties array
$properties $reflector->getProperties();

$i =1;
//Now go through the $properties array and populate each property
foreach($properties as $property)
{
    
//Populating properties
    
$a->{$property->getName()}=$i;
    
//Invoking the method to print what was populated
    
$a->{"echo".ucfirst($property->getName())}()."\n";
   
    
$i++;
}

?>

上一篇: 下一篇: