/** * 输出结果 * * @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); } }
/** * 设置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']); } }
/** * 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; }
/** * 输出结果 * * @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); } }