php 用反射API来获取一个类的原型

来源:互联网 发布:java生成嵌套json数据 编辑:程序博客网 时间:2024/05/16 02:11
 <?php/*2014-03-26*接 上次发布的<<php 反射API >>====>用反射API 来反射获取一个类的原型*看下边的代码:*/class person{  public $name;  public $gender;  public function say(){ echo $this->name,"\tis",$this->gender,"\r\n";  }  public function __set($name,$value){ echo "Setting $name to $value"; $this->$name=$value;  }  public function __get($name){if(!isset($this->name)){echo '未设置';$this->$name='现在为你设置默认值';} return $this->$name;  }}$student = new person();$obj = new ReflectionClass(get_class($student));$className = $obj->getName();$Methods = $Properties =array();foreach($obj->getProperties() as $v){$Properties[$v->getName()] = $v;}foreach($obj->getMethods() as $v){$Methods[$v->getName()] = $v;}echo "class $className \n {\n";is_array($Properties)&&ksort($Properties);foreach($Properties as $k=>$v){echo "\t";echo $v->isPublic()?'public':'',$v->isProtected()?'protected':'',$v->isPrivate()?'private':'',$v->isStatic()?'static':'';echo "\t{$k}\n";}echo "\n";is_array($Methods)&&ksort($Methods);foreach($Methods as $k=>$v){echo "\tfunction {$k}(){}\n";}echo "}\n";  /*输出结果 * class person  {publicgenderpublicnamefunction __get(){}function __set(){}function say(){}}反射还有很多相关类,可参考手册。未完待续......(下一篇文章根据反射写一个实际运行====简单的动态代理) */ ?>

0 0