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

 <?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 
		 {
			public	gender
			public	name

			function __get(){}
			function __set(){}
			function say(){}
		}

		反射还有很多相关类,可参考手册。
		未完待续......(下一篇文章根据反射写一个实际运行====简单的动态代理)
		 */
 ?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值