PHP 5 具有完整的反射 API,增加了對類別、介面、函數、方法和擴充進行反向工程的能力。 此外,反射 API 提供了方法來取出函數、類別和方法中的文件註解。
ReflectionClass::__construct — 建構一個ReflectionClass 類別
public ReflectionClass::__construct ( mixed $argument )
ReflectionClass::newInstanceArgs — 從給出的參數建立一個新的類別實例,給出的參數將傳遞到類別的建構子。
public object ReflectionClass::newInstanceArgs ([ array $args ] )
/thinkphp/library/think/Container.php
/** * 调用反射执行类的实例化 支持依赖注入 * @access public * @param string $class 类名 * @param array $vars 参数 * @return mixed */ public function invokeClass($class, $vars = []) { try { $reflect = new ReflectionClass($class); $constructor = $reflect->getConstructor(); //用于支持依赖的注入 $args = $constructor ? $this->bindParams($constructor, $vars) : []; return $reflect->newInstanceArgs($args); } catch (ReflectionException $e) { throw new ClassNotFoundException('class not exists: ' . $class, $class); } }
相關推薦:
以上是php反射機制解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!