ReflectionClass与Closure

<?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
posted @ 2016-02-24 12:27  UCanBeFree  阅读(176)  评论(0编辑  收藏  举报