🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 反射机制 ## 理解: > 面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。 反射,直观理解就是根据到达地找到出发地和来源。比如,一个·光秃秃的对象,我们可以仅仅通过这个对象就能知道它所属的类,拥有哪些方法。 ## 定义: > 反射是指在PHP运行状态中,扩展分析PHP程序,导出或提出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。 ## 代码: ~~~ class Cat{ public $name; private $sex; public function __construct($name,$sex) { $this->name = $name; $this->sex = $sex; } public function __toString(){ //返回该类的相关信息,比如类名,所有成员方法和所有属性等 //初步接触一下反射机制(可以获取到该类的所有信息) ReflectionClass echo '<br>'; //1.创建一个反射对象,也就是一个类本身也可以看做一个对象 $reflection_obj = new ReflectionClass($this); echo '<pre>'; //2.通过反射对象获取到该类的相关信息 [你是一个面向对象的程序员] //(1)类名 echo '<br> 类名是'.$reflection_obj->getName(); echo '<br>成员方法'; //(2)所有的成员方法 var_dump($reflection_obj->getMethods()); //(3)所有属性 echo '<br>属性'; var_dump($reflection_obj->getProperties()); return ''; } } $cat = new Cat('花猫','公的'); echo $cat; ~~~ ## 使用反射实现代理调用(这个也是反射最核心的价值)