Example #1
0
 /**
  * 分发请求到对象的方法
  */
 public function dispatch($handler, $require_oauth = false, $request = null)
 {
     // 检查handler
     if (!is_string($handler)) {
         throw new PrismException('No handler given to dispatcher');
     }
     // 创建Request和Response
     if (!$request) {
         $request = new Request();
     }
     $response = new Response($request->getRequestID());
     // oauth判断
     if ($require_oauth && !$request->getOauth()) {
         $response->setError('Invalid Request', 'Oauth is required')->send();
     }
     // 使用middlewares
     foreach ($this->middlewares as $middleware) {
         list($class_name, $action_name) = explode('@', $middleware);
         call_user_func(array(new $class_name(), $action_name), $request, $response);
     }
     // 清理不需要的params
     if ($this->routing_key) {
         unset($request->params[$this->routing_key]);
     }
     // 解析对象名和方法名
     list($class_name, $action_name) = explode('@', $handler);
     // 执行方法
     call_user_func(array(new $class_name(), $action_name), $request, $response);
 }