PHP中的反射
PHP5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。
请注意部分内部 API 丢失了反射扩展工作所需的代码。 例如,一个内置的 PHP 类可能丢失了反射属性的数据。这些少数的情况被认为是错误,不过, 正因为如此,它们应该被发现和修复。
<?php
/**
* Created by PhpStorm.
* User: bravo
* Date: 2016/6/30
* Time: 14:11
*/
namespace ex11;
/*
* @package oop1
* @property ex10person
* @auther bravo
*/
class person
{
public $name;
public $gender;
public function say()
{
echo $this->name," is ", $this->gender;
}
public function __set($name, $value)
{
echo "setting $name to $value
";
echo $this->name=$value;
}
public function __get($name)
{
if(!isset($name))
{
echo "未设置";
$this->name="正在设置";
}
return $this->name;
}
}
$stu=new person();
$stu->name='Lucy';
$stu->gender='female';
$stu->say();
echo "
";
$reflect=new ReflectionObject($stu);
$props = $reflect->getProperties();
echo "properties of stu are:
";
foreach($props as $prop)
{
print $prop->getName()."
";
}
$methods = $reflect->getMethods();
echo "properties of stu are:
";
foreach($methods as $method)
{
print $method->getName()."
";
}