/** * 构造方法 * * @access public * @param Exception $e * @param \Yaf\Request_Abstract $request */ public function __construct(Exception $e, Request_Abstract $request) { $this->host = @$_SERVER['SERVER_NAME']; $this->uri = @$_SERVER['REQUEST_URI']; $this->query = @$_SERVER['QUERY_STRING']; $this->module = $request->getModuleName(); $this->controller = $request->getControllerName(); $this->action = $request->getActionName(); $this->params = ''; if ($request->isPost()) { $this->params = '$_POST => ' . var_export($request->getPost(), true) . "\r\n"; } if (strtolower($request->getMethod()) == 'cli' || strtolower($request->getMethod()) == 'api') { $this->params .= 'CLI_PARAMS => ' . var_export($request->getParams(), true); } $this->code = $e->getCode(); $this->message = $e->getMessage(); $this->file = $e->getFile(); $this->line = $e->getLine(); $this->exception = get_class($e); $this->datetime = date('Y-m-d H:i:s'); $this->timestamp = time(); }
/** * <p><b>\Yaf\Route_Interface::route()</b> is the only method that a custom route should implement.</p><br/> * <p>if this method return TRUE, then the route process will be end. otherwise,\Yaf\Router will call next route in the route stack to route request.</p><br/> * <p>This method would set the route result to the parameter request, by calling \Yaf\Request_Abstract::setControllerName(), \Yaf\Request_Abstract::setActionName() and \Yaf\Request_Abstract::setModuleName().</p><br/> * <p>This method should also call \Yaf\Request_Abstract::setRouted() to make the request routed at last.</p> * * @link http://www.php.net/manual/en/yaf-route-interface.route.php * * @param \Yaf\Request_Abstract $request * @desc 默认module和controller均写死为Index了 * @return bool */ public function route($request) { $uris = explode('/', str_replace('-', '', $request->getRequestUri())); $request->setModuleName('Index'); if (!empty($uris[1])) { $request->setControllerName($uris[1]); } else { $request->setControllerName('Index'); } $params = array(); $param_pairs = array_chunk(array_slice($uris, 2), 2); foreach ($param_pairs as $param) { $params[$param[0]] = empty($param[1]) ? '' : $param[1]; } $request->setParam($params); $request->setParam($_REQUEST); $request->setActionName(strtolower($request->getMethod())); $method = $request->getParam('_method'); if (!empty($method)) { $request->setActionName(strtolower($method)); } //如果不return true 会继续执行static 路由规则 return true; }