Beispiel #1
0
 public function checkParams(&$class, &$action_name, &$params)
 {
     if (!method_exists($class, 'getParams')) {
         throw new RuntimeException('获取参数列表失败');
     }
     $paramsInfos = $class->getParams();
     apiUtil::paramsValidate($params, $paramsInfos);
     //预处理下params
     //转化下数据的格式,比如对数据结构fields进行转化和extends扩展等
     $params = apiUtil::pretreatment($params, $paramsInfos);
     //判断下方法是否存在
     if (!method_exists($class, $action_name)) {
         throw new RuntimeException('找不到方法 :' . $action_name);
     }
     return $params;
 }
Beispiel #2
0
 protected function callInternal($flag, $parameters = array())
 {
     $apis = config::get('apis.routes');
     if (array_key_exists($flag, $apis)) {
         list($class, $method) = explode('@', $apis[$flag]['uses']);
     } else {
         throw new InvalidArgumentException("Api [{$flag}] not defined");
     }
     $instance = new $class();
     $apiParams = $instance->getParams();
     //验证数据
     //通过传入数据和api原定义的类型进行比对
     apiUtil::paramsValidate($parameters, $apiParams);
     //因为有些数据需要批量处理,就防这里了
     $apiParameters = apiUtil::pretreatment($parameters, $apiParams);
     return call_user_func(array($instance, $method), $apiParameters);
 }