PHP Reflection是用于获取类、扩展、方法、函数、对象、参数、属性的详细信息。
ReflectionClass类获取类相关信息,如获取属性、方法、文档注释等。
<?php class Person { /** * For the sake of demonstration, we"re setting this private */ private $_allowDynamicAttributes = false; /** type=primary_autoincrement */ protected $id = 0; /** type=varchar length=255 null */ protected $name; /** type=text null */ protected $biography; public function getId() { return $this->id; } public function setId($v) { $this->id = $v; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } public function getBiography() { return $this->biography; } public function setBiography($v) { $this->biography = $v; } } //导出类 ReflectionClass::export('Person'); $r = new ReflectionClass('Person'); //获取所有属性 print_r($r->getProperties()); /** * 获取指定属性 * ReflectionProperty::IS_STATIC * ReflectionProperty::IS_PUBLIC * ReflectionProperty::IS_PROTECTED * ReflectionProperty::IS_PRIVATE */ print_r($r->getProperties(ReflectionProperty::IS_PRIVATE)); //获取注释 print_r($r->getProperty('id')->getDocComment()); //获取方法 print_r($r->getMethods());
ReflectionExtension 类用于获取扩展相关信息
$re = new ReflectionExtension('Reflection'); print_r($re->getClasses()); //扩展的所有类 print_r($re->getClassNames()); //扩展所有类名 $dom = new ReflectionExtension('mysql'); print_r($dom->getConstants());//扩展常量 print_r($dom->getDependencies());//该扩展依赖 print_r($dom->getFunctions());//扩展方法 print_r($dom->getINIEntries());//扩展ini信息 print_r($dom->getName());//扩展名称 print_r($dom->getVersion());//扩展版本 print_r($dom->info());//扩展信息 print_r($dom->isPersistent());//是否是持久扩展 print_r($dom->isTemporary()); //是否是临时扩展
ReflectionFunction类 用户获取函数相关信息
$rf = new ReflectionFunction('array_merge'); foreach($rf->getParameters() as $item) { echo $item . PHP_EOL; }
ReflectionMethod类用户获取方法相关信息
class Person { public $name; /** * get name of person */ public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $rm = new ReflectionMethod('Person', 'getName'); print_r($rm->isPublic()); print_r($rm->getDocComment());
ReflectionObject 类 用于获取对象相关信息
class Person { public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $a = new Person('a'); $ro = new ReflectionObject($a); print_r($ro->getMethods());
ReflectionParameter 获取函数或方法参数的相关信息。
class Person { public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $p = new ReflectionParameter(array('Person', 'setName'), 0); print_r($p->getPosition()); //0 print_r($p->getName()); //v
ReflectionProperty 获取类的属性的相关信息。
class Person { /** 测试 */ public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $p = new ReflectionProperty('Person', 'name'); print_r($p->getDocComment());
Reflection对象用于在运行时获取类型信息。 提供对正在运行的程序的元数据的访问的类位于System.Reflection命名空间中。 System.Reflection命名空间包含的类允许您获取有关应用程序的信息,并动态地向应用程序添加类型,值和对象。 反射的应用 反射有以下应用 - 它允许在运行时查看属性信息。 它允许检查程序集中的各种类型并实例化这些类型。 它允许后期绑定到方法和属性
本文向大家介绍实例介绍PHP的Reflection反射机制,包括了实例介绍PHP的Reflection反射机制的使用技巧和注意事项,需要的朋友参考一下 PHP5添加了一项新的功能:Reflection。这个功能使得程序员可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信
主要内容:反射的基本概念,reflect 包,反射的类型对象(reflect.Type),反射的类型(Type)与种类(Kind),指针与指针指向的元素,使用反射获取结构体的成员类型,结构体标签(Struct Tag)反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可以利用这些类型信息做非常灵活的工作。 大多数现代的高级语言都以各种形式支持反射功能,反射是把双刃剑,功能强大但代码可读性并不理想,若非必要并不推荐使用反射。 下面我们就来将
本文向大家介绍详解C# 反射(Reflection),包括了详解C# 反射(Reflection)的使用技巧和注意事项,需要的朋友参考一下 C# 反射(Reflection) 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中
本文向大家介绍PHP中的reflection反射机制测试例子,包括了PHP中的reflection反射机制测试例子的使用技巧和注意事项,需要的朋友参考一下 Java类反射应用得非常广泛几乎是所有框架的最核心部分,PHP程序员似乎从不关心反射。尝试着用java的思想去理解php的反射,跟java基本上基本一致。参考了php手册:http://www.php.net/manual/zh/book.re
本文向大家介绍PHP反射使用实例和PHP反射API的中文说明,包括了PHP反射使用实例和PHP反射API的中文说明的使用技巧和注意事项,需要的朋友参考一下 最近在开发过程中需要获取某个类方法的参数数量、名称及参数顺序,好根据参数的名称来从$_GET里取值。 如方法原型为test($uid,$score), 那么我就知道需要需要从$_GET取 然后调用方法$obj->test($uid,$score