<?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); ?>

  

最新文章

  1. C#中两个Form窗口之间的传值(父-&gt;子)(子-&gt;父)
  2. range for query
  3. mysql登录和连接 权限
  4. ural 1431. Diplomas
  5. 一个比较全面的DJANGO_REST_FRAMEWORK的CASE
  6. window.applicationCache事件,介绍
  7. Yii CDbCriteria的常用方法
  8. Codeforces Round #418 (Div. 2).C two points
  9. Jenkins远程部署SpringBoot应用
  10. LoadRunner常用方法
  11. AI-逻辑回归函数、激活函数、损失函数
  12. ECMA Script 6_函数的扩展
  13. css学习-》养成路线
  14. MySql5.7多实例配置教程
  15. 【BZOJ2125】最短路(仙人掌,圆方树)
  16. opencv学习之路(21)、模板匹配及应用
  17. git学习笔记2——ProGit2
  18. 简短而有效的python queue队列解释
  19. 一行一行读Java源码——LinkedBlockingQueue
  20. REST-framework快速构建API--认证

热门文章

  1. django的日志发往http server
  2. Java调用DLL有多种方式,常用的方式有JNative、JNA、JNI等。
  3. iOS:CoreText的常用语法
  4. iOS:简易的音视屏播放框架XYQPlayer
  5. jboss支持远程访问配置
  6. 如何查看Isilon的节点的CPU的信息?
  7. Rotate Image leetcode java
  8. 【Scala】Scala学习资料
  9. 使用MultipartEntity对文字、图片、视频进行综合上传
  10. Linux中盘符的两种挂载方法