在yiparts的mvc框架之中:
获取类对象:
// 拼接获取控制器文件所在路径 $classfile .= $ClassName.‘.php‘; @require_once ($classfile); // 执行调用 $view = new $ClassName ();
反射获取需要执行的方法的参数,然后将方法的参数
/* 反射, 获取执行的function参数对应关系 */ $reflector = new ReflectionMethod ( $ClassName, $methodName ); $func_params = $reflector->getParameters (); // example:picture/index => index($id,$zid) // res:Array ( [0] => ReflectionParameter Object ( [name] => id ) [1] => ReflectionParameter Object ( [name] => zid ) ) // 调用反射去除在url传递的不需要的参数 foreach ( $func_params as $k => $v ) { $pv = self::$URL_PARAMS [$v->name]; if ($pv != ‘‘) { $params [$k] = $pv; } }
假定方法名 a($c){ }那么$params = array(‘name‘=>123);
回调执行:
// 回调执行action->method call_user_func_array ( array ( $view,$methodName), $params );
完整小demo: