- <?php
- class 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);
- else
- echo 'parameters is not match!';
- //该片段来自于http://www.codesnippet.cn/detail/170320149051.html
来源: http://www.codesnippet.cn/detail/170320149051.html