php反射API 获取属性/注释/方法 执行方法 实例
2013-07-02 23:00
1266 查看
<?php class Person { /** * 这里是对$_allowDynamicAttributes的注释信息 */ 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; } } $class = new ReflectionClass('Person'); //建立Person这个类的反射类 $instance = $class->newInstanceArgs(); //相当于实例化Person类 //var_dump($instance); //1 获取属性(Properties): echo "<h1>获取属性</h1>"; $properties = $class->getProperties(); foreach ($properties as &$property) { echo $property->getName()."<BR>"; } //默认情况下,ReflectionClass会取所有的属性,private 和protected的也可以 //如果只想获取到private属性,就要额外传个参数 //可用参数列表: // $private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE); // 可用参数列表 //ReflectionProperty::IS_STATIC //ReflectionProperty::IS_PUBLIC //ReflectionProperty::IS_PROVATE //ReflectionProperty::IS_PROECTED //如果要同时获取public 和private 属性,就这样写:ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED。 echo "<h1>获取注释</h1>"; //获取注释 foreach($properties as &$property) { if($property->isProtected()) ////测试该方法是否为protected { $docblock = $property->getDocComment(); preg_match('/ type\=([a-z_]*) /', $property->getDocComment(), $matches); echo $matches[1]."<BR><BR>"; } } //获取类的方法 //获取方法(methods):通过getMethods()来获取到类的所有methods //执行类的方法 $instance->setBiography(22); echo $instance->getBiography(); //执行Person里面的方法getBiography //或者 $ec = $class->getMethod('setName'); $ec->invoke($instance,'xlc'); $ec2 = $class->getMethod('getName'); echo $ec2->invoke($instance); ?>
相关文章推荐
- Java 使用反射获取类、方法、属性上的注释
- C#反射新建类实例和调用类方法及属性帮助类 以及获取或设置对象属性中字段值帮助类
- php反射获取方法及其注释控制权限
- C#反射实例——获取及设置对象属性,运行对象方法
- java反射获取类的类名、属性名、属性类型、方法、执行方法、构造函数
- php反射获取类和方法中的注释
- php反射获取类及方法中的注释
- php反射获取类及方法中的注释
- 反射示例1-----执行反射dll的方法和获取属性的值
- php获取新浪微博数据API实例
- php之static静态属性与静态方法实例分析
- PHP中的__get()和__set()方法获取设置私有属性
- 通过反射来获取私有的属性,方法~~
- Java反射之获取私有公共的属性和方法
- PHP通过反射方法调用执行类中的私有方法
- 反射获取有参数的成员方法并执行
- 用反射的方式获取父类中的所有属性和方法
- PHP获取页面执行时间的方法(推荐)
- java 通过反射获取调用类方法及属性
- php获取数组长度的方法+实例