php 反射实例应用-thinkphp 控制器调度

来源:互联网 发布:大数据概念股 编辑:程序博客网 时间:2024/05/22 13:46
<?phpclass IndexAction{public function index(){echo 'index'."\r\n";}public function test($year=2012,$month=2,$day=21){ echo $year.'--------'.$month.'-----------'.$day."\r\n";}public function _before_index(){echo __FUNCTION__."\r\n";}public function _after_index(){echo __FUNCTION__."\r\n";}}//执行index方法$method = new ReflectionMethod('IndexAction','index');//进行权限判断if($method->isPublic()){$class = new ReflectionClass('IndexAction');//执行前置方法if($class->hasMethod('_before_index')){$beforeMethod = $class->getMethod('_before_index');if($beforeMethod->isPublic()){$beforeMethod->invoke(new IndexAction);}}$method->invoke(new IndexAction);//执行后置方法if($class->hasMethod('_after_index')){$beforeMethod = $class->getMethod('_after_index');if($beforeMethod->isPublic()){$beforeMethod->invoke(new IndexAction);}}}//执行带参数的方法$method = new ReflectionMethod('IndexAction','test');$params = $method->getParameters();foreach($params as $param ){$paramName = $param->getName();if(isset($_REQUEST[$paramName]))$args[] = $_REQUEST[$paramName];elseif($param->isDefaultValueAvailable())$args[] = $param->getDefaultValue();}if(count($args)==$method->getNumberOfParameters())$method->invokeArgs(new IndexAction,$args);elseecho 'parameters is not match!';
http://www.ymsky.net/views/52629.shtml 本文章来至源码世界
0 0
原创粉丝点击