天津企业网站策划公司/适合网络营销的产品
反射:通过一个对象就能知道它所属的类、拥有哪些方法、属性等等类的信息。指在PHP运行状态中,扩展分析PHP程序,导出或提出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。
先看一个例子:
<?phpclass person {public $name;public $gender;public function say(){echo $this->name," \tis ",$this->gender,"\r\n";}public function set($name, $value) {$this->$name= $value;}public function get($name) {return $this->$name;}}$student = new person();
$student->name='Tom';
$student->gender='male';
$student->age=24;
通过反射类能获取到 $student 的对象里面的方法、方法的权限和属性等等:
$reflect = new ReflectionObject($student);//@todo 获取对象的属性
$props = $reflect->getProperties();foreach ($props as $prop) {print $prop->getName() ."\n";
}//@TODO 获取对象方法列表
$m = $reflect->getMethods();foreach ($m as $prop) {print $prop->getName() ."\n";
}
如果不通过反射类,也可以用函数获取:
// 获取对象属性列表所属的类
echo get_class($student);// 返回对象属性的关联数组
var_dump(get_object_vars($student));// 类属性
var_dump(get_class_vars(get_class($student)));// 返回由类的方法名组成的数组
var_dump(get_class_methods(get_class($student)));
部分内容选自:
PHP反射机制原理与用法详解_php技巧_脚本之家 (jb51.net)