123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
-
- namespace Luticate\Utils;
-
- class LuRoute {
-
- const REG_UINT = "[0-9]+";
- const REG_INT = "\\-?" . self::REG_UINT;
- const REG_BOOL = "true|false";
-
- /**
- * @var string[]
- */
- private $middleware = array('Luticate\Utils\ParametersMiddleware');
-
- /**
- * @var LuRouteDbo[]
- */
- private $routes = array();
-
- /**
- * @var LuRoute
- */
- private static $instance = null;
-
- private function __construct()
- {
-
- }
-
- public static function getInstance()
- {
- if (is_null(self::$instance)) {
- self::$instance = new LuRoute();
- }
- return self::$instance;
- }
-
- public function getRoutes()
- {
- return $this->routes;
- }
-
- /**
- * @param $middleware string
- */
- public function addMiddleware($middleware)
- {
- $this->middleware[] = $middleware;
- }
-
- private function getOptions($httpMethod, $url, $business, $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($business, "\\") === false) {
- $business = "App\\Http\\Business\\" . $business . "Business";
- }
-
- $route = new LuRouteDbo();
- $route->setUrl($url);
- $route->setBusinessClass($business);
- $route->setBusinessMethod($method);
- $route->setMiddlware($middleware_string);
- $route->setPermissions($permissions);
- $route->setMethod($httpMethod);
- $this->routes[] = $route;
-
- return [function() use($business, $method)
- {
- $controller = new LuController();
-
- return $controller->execute($business, $method);
- },
- 'middleware' => $middleware_string];
- }
-
- /**
- * @param $url string
- * @param $business string
- * @param $method string
- * @param array $permissions string|string[]
- * @param array $middleware string|string[]
- * @return mixed
- */
- public function get($url, $business, $method, $permissions = array(), $middleware = array())
- {
- global $app;
- return $app->get($url, $this->getOptions("GET", $url, $business, $method, $permissions, $middleware));
- }
-
- /**
- * @param $url string
- * @param $business string
- * @param $method string
- * @param array $permissions string|string[]
- * @param array $middleware string|string[]
- * @return mixed
- */
- public function post($url, $business, $method, $permissions = array(), $middleware = array())
- {
- global $app;
- return $app->post($url, $this->getOptions("POST", $url, $business, $method, $permissions, $middleware));
- }
-
- /**
- * @param $url string
- * @param $business string
- * @param $method string
- * @param array $permissions string|string[]
- * @param array $middleware string|string[]
- * @return mixed
- */
- public function put($url, $business, $method, $permissions = array(), $middleware = array())
- {
- global $app;
- return $app->put($url, $this->getOptions("PUT", $url, $business, $method, $permissions, $middleware));
- }
-
- /**
- * @param $url string
- * @param $business string
- * @param $method string
- * @param array $permissions string|string[]
- * @param array $middleware string|string[]
- * @return mixed
- */
- public function delete($url, $business, $method, $permissions = array(), $middleware = array())
- {
- global $app;
- return $app->delete($url, $this->getOptions("DELETE", $url, $business, $method, $permissions, $middleware));
- }
- }
|