您的位置:首页 > 编程语言 > PHP开发

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

2014-03-26 20:40 281 查看
<?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(){}
}

反射还有很多相关类,可参考手册。
未完待续......(下一篇文章根据反射写一个实际运行====简单的动态代理)
*/
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 面向对象