一、簡介
反射API的整體類結構如下:
Reflector ;反射接口,反射類需要實現的功能
Reflection ;基礎反射操作類
ReflectionZendExtension ;Zend引擎擴展反射類
ReflectionExtension ;普通擴展反射類
ReflectionFunctionAbstract ;方法和函數的抽象反射類
ReflectionFunction ;函數反射類
ReflectionParameter ;方法和函數的參數反射類型
ReflectionClass ;類反射類
ReflectionObject ;對象反射類
ReflectionMethod ;類方法反射類
ReflctionProperty ;類屬性反射類
ReflectionClass ;類報告了一個類的有關信息
ReflectionException ;類繼承Exception
二、常用函數
- ReflectionClass::__construct — 初始化 ReflectionClass 類
- ReflectionClass::newInstance — 從指定的參數創建一個新的類實例
三、例子
<?php namespace app\abstractfactory\controller; use ReflectionClass; use ReflectionException; class AbstractFactoryTest { public $namespace = '\app\abstractfactory\controller\\'; public function test() { $aClassName = $this->namespace . aClass; try { //$aClassName作為參數,傳給ReflectionClass的構造函數 //在嘗試賦值的時候會拋出 ReflectionException $a_class = new ReflectionClass($meatClassName); //實例化類 $a_Obj = $a_class->newInstance(); } catch (\ReflectionException $e) { return $e->getMessage(); } echo $a_Obj ->buy(); } }