<?php/*** 解析控制器* @author sunhaoqiang(shqdev@163.com)* @time: 2019年11月29日 11:45*/namespace script;use script\DecoratorBase;use script\Http;class RouteAnalysis{// 路由名称private $route_name;// 路由执行的类名private $route_cls;// 路由执行的类方法private $route_action;// 路由的来源private $route_from;// 路由的注册方式:配置文件注册,动态注册private $route_register_type;// 中间件public $middleware;public function __construct($route_name, $params, Array $from = []){$this->init($route_name, $params, $from);}/***** @param String $route_name 路由名称* @param String|Array $params 控制器、执行方法* @param Array $from 路由的注册来源* @return void* @author sunhaoqiang(shqdev@163.com)* @time 2019年12月27日 17:02*/private function init($route_name, $params, Array $from = []){if (!empty($route_name)) {$this->route_name = $route_name;}if (is_string($params)) {[$this->route_cls, $this->route_action] = explode(':', $params);}if (is_array($params) && key_exists('controller', $params) && key_exists('action', $params)) {$this->route_cls = $params['controller'];$this->route_action = $params['action'];}}/*** 控制器执行方法** @return void* @author sunhaoqiang(shqdev@163.com)* @time 2019年12月27日 16:02*/private function action(){if (empty($this->route_name)) {throw new \Exception("路由名称不能为空");}if (empty($this->route_cls) || empty($this->route_action)) {throw new \Exception("路由找不到");}$cls = new $this->route_cls;$action = $this->route_action;return $cls->$action();}public function add(DecoratorBase $middleware){$this->middleware = $middleware;return $this;}/*** 解析路由并执行控制器** @return void* @author sunhaoqiang(shqdev@163.com)* @time 2019年12月27日 16:03*/public function run(){if (!empty($this->middleware)) {$this->middleware->befer();}Http::set('result', $this->action());if (!empty($this->middleware)) {$this->middleware->after();}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。