routes; } /** * @param $middleware string */ public function addMiddleware($middleware) { $this->middleware[] = $middleware; } private function getOptions($httpMethod, $url, $controller, $method, $permissions, $middleware) { if (!is_array($permissions)) { $permissions = array($permissions); } if (!is_array($middleware)) { $middleware = array($middleware); } $permissions_string = implode(",", $permissions); $middleware_string = []; foreach (array_merge($this->middleware, $middleware) as $mid) { $middleware_string[] = $mid . (strpos($mid, ":") !== false ? "," : ":") . $permissions_string; } if (strpos($controller, "\\") === false) { $controller = "App\\Http\\Controller\\" . $controller . "Controller"; } $route = new LuRouteDbo(); $route->setUrl($url); $route->setBusinessClass($controller); $route->setBusinessMethod($method); $route->setMiddlware($middleware_string); $route->setPermissions($permissions); $route->setMethod($httpMethod); $this->routes[] = $route; return [function() use($controller, $method) { $reflect = new \ReflectionMethod($controller, $method); $params = $reflect->getParameters(); $args = array(); foreach ($params as $param) { if ($param->isOptional()) { $args[$param->getName()] = LuBusiness::getParam($param->getName(), $param->getDefaultValue()); } else { $args[$param->getName()] = LuBusiness::checkParam($param->getName()); } } return LuOutputFormatter::formatSuccess(forward_static_call_array(array($controller, $method), $args)); }, 'middleware' => $middleware_string]; } /** * @param $url string * @param $controller string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function get($url, $controller, $method, $permissions = array(), $middleware = array()) { global $app; return $app->get($url, $this->getOptions("GET", $url, $controller, $method, $permissions, $middleware)); } /** * @param $url string * @param $controller string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function post($url, $controller, $method, $permissions = array(), $middleware = array()) { global $app; return $app->post($url, $this->getOptions("POST", $url, $controller, $method, $permissions, $middleware)); } /** * @param $url string * @param $controller string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function put($url, $controller, $method, $permissions = array(), $middleware = array()) { global $app; return $app->put($url, $this->getOptions("PUT", $url, $controller, $method, $permissions, $middleware)); } /** * @param $url string * @param $controller string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function delete($url, $controller, $method, $permissions = array(), $middleware = array()) { global $app; return $app->delete($url, $this->getOptions("DELETE", $url, $controller, $method, $permissions, $middleware)); } }