框架之中類的執行方式
阿新 • • 發佈:2018-01-15
param all 控制器 ctu sna 分享 拼接 技術分享 post
在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:
框架之中類的執行方式