<?php
/*** Class A*/
class A{}$obj = new ReflectionClass('A');
var_export($obj.PHP_EOL);
類后面加上PHP_EOL會把當前類的詳細接口文檔打印出來。
ReflectionClass 可以利用這個動態創建類,動態使用類方法參數。
try{
//如果存在控制器名字的類
if(class_exists($this->getController())) {
//利用反射api構造一個控制器類對應的反射類
$rc = new ReflectionClass($this->getController());
//如果該類實現 了IController接口
if($rc->implementsInterface('IController')) {
//該類擁有解析后的action字符串所指向的方法名
if($rc->hasMethod($this->getAction())) {
//構造一個控制器類的實例
$controller = $rc->newInstance();
//獲取該類$action參數所指向的方法對象
$method = $rc->getMethod($this->getAction());
//反射類方法對象的調用方式:
$method->invoke($controller);
} else {
//以下為可能拋出異常
throw new Exception("Action");
}
} else {
throw new Exception("Interface");
}
} else {
throw new Exception("Controller");
}}catch(exception $e){echo $e;}
Closure //閉包的意思。這個跟javascript的閉包有點類似。
function getClosure(){
return function(){};
}
var_dump(getClosure());//可以看到是一個 Closure Object