예제 #1
0
파일: Rest.php 프로젝트: ss7247/crossphp
 /**
  * 输出结果
  *
  * @param Closure $process_closure
  * @param array $params
  * @throws CoreException
  */
 private function response(Closure $process_closure, $params)
 {
     $need_params = '';
     $closure_params = array();
     $ref = new ReflectionFunction($process_closure);
     $parameters = $ref->getParameters();
     if (count($parameters) > count($params)) {
         foreach ($parameters as $r) {
             if (!isset($params[$r->name])) {
                 $need_params .= sprintf('%s ', $r->name);
             }
         }
         throw new CoreException("所需参数: {$need_params}未指定");
     }
     foreach ($parameters as $p) {
         if (!isset($params[$p->name])) {
             throw new CoreException("不匹配的参数: {$p->name}");
         }
         $closure_params[$p->name] = $params[$p->name];
     }
     $rep = call_user_func_array($process_closure, $closure_params);
     if (null != $rep) {
         $this->delegate->getResponse()->display($rep);
     }
 }
예제 #2
0
 /**
  * 设置Response
  *
  * @param array $config
  */
 private function setResponseConfig(array $config)
 {
     if (isset($config['content_type'])) {
         $this->delegate->getResponse()->setContentType($config['content_type']);
     }
     if (isset($config['status'])) {
         $this->delegate->getResponse()->setResponseStatus($config['status']);
     }
 }
예제 #3
0
 /**
  * request response view
  *
  * @param string $property
  * @return Response|Request|View|Config|null
  */
 function __get($property)
 {
     switch ($property) {
         case 'config':
             return $this->config = $this->delegate->getConfig();
         case 'request':
             return $this->request = $this->delegate->getRequest();
         case 'response':
             return $this->response = $this->delegate->getResponse();
         case 'view':
             return $this->view = $this->initView();
     }
     return null;
 }
예제 #4
0
파일: Rest.php 프로젝트: im286er/crossphp
 /**
  * 输出结果
  *
  * @param Closure $process_closure
  * @param array $params
  * @throws CoreException
  */
 private function response(Closure $process_closure, array $params = array())
 {
     $closure_params = array();
     $ref = new ReflectionFunction($process_closure);
     $parameters = $ref->getParameters();
     if (!empty($parameters)) {
         foreach ($parameters as $p) {
             if (!isset($params[$p->name])) {
                 throw new CoreException("未指定的参数: {$p->name}");
             }
             $closure_params[$p->name] = $params[$p->name];
         }
     }
     $content = call_user_func_array($process_closure, $closure_params);
     if (null != $content) {
         $this->delegate->getResponse()->display($content);
     }
 }