PHP中的反射

PHP中的反射

在一些语言中,都支持反射操作。个人理解,反射就是在运行时,能确定反省出一个类的类名、类成员、类变量等。

<?php

class Demo{
	public $age;
	public $sex;
	public function method1(){
		echo 1;
	}
	public function method2(){
		echo 2;
	}
	public function method3(){
		$this->hobby=12;
		echo 3;
	}
	protected function method4(){
		echo 4;
	}
}



$demo  =  new Demo;
var_dump($demo);
//1、直接获取到
print_r(get_class_methods($demo));
print_r(get_class_vars('Demo'));// 注意,这个是类名称,而不是类实例
//print_r(get_class_vars(Demo));  //直接写报错


//没有在类中直接声明的类属性,在反射时有区别。
$demo->method3();
var_dump($demo->hobby);
//用类的实例,即对象,来创建一个反射对象。
$re  = new ReflectionClass($demo);
print_r($re->getMethods());
print_r($re->getProperties());
?>