diff --git a/src/BBRouter/RouteCollection.php b/src/BBRouter/RouteCollection.php index cbbc731..b7fbd09 100755 --- a/src/BBRouter/RouteCollection.php +++ b/src/BBRouter/RouteCollection.php @@ -2,65 +2,61 @@ namespace BBRouter; -class RouteCollection{ +class RouteCollection { private static $_route_collection; - public $_uri = '/'; - public $_routes = Array(); - private $_verb = ''; - private $_loaded_files = Array(); - private $_errors = Array(); - private $_default_middlewares = Array(); - - private static $_verbs_whitelist = Array('*', 'GET','POST','PUT','PATCH','DELETE', 'CLI'); - - private static $_verbs_web = Array('GET','POST','PUT','PATCH','DELETE'); - + private $_middleware_set = Array(); + private static $_verbs_whitelist = Array('*', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'CLI'); + private static $_verbs_web = Array('GET', 'POST', 'PUT', 'PATCH', 'DELETE'); //SINGLETON============================================== - private function __construct(){ } + private function __construct() { + + } - private static function newObj(){ + private static function newObj() { if (!isset(self::$_route_collection)) { self::$_route_collection = new RouteCollection(); - if(php_sapi_name() == "cli"){ - self::$_route_collection->_uri = isset( $_SERVER['argv'][1] ) ? '/'. $_SERVER['argv'][1] : '/'; - }else{ - self::$_route_collection->_uri = isset( $_SERVER['REQUEST_URI'] ) ? explode('&', $_SERVER['REQUEST_URI'])[0] : '/'; + if (php_sapi_name() == "cli") { + self::$_route_collection->_uri = isset($_SERVER['argv'][1]) ? '/' . $_SERVER['argv'][1] : '/'; + } else { + self::$_route_collection->_uri = isset($_SERVER['REQUEST_URI']) ? explode('&', $_SERVER['REQUEST_URI'])[0] : '/'; } self::$_route_collection->define_verb(); } return self::$_route_collection; } - public static function getInstance(){ + /** + * + */ + public static function getInstance() { if (!isset(self::$_route_collection)) { return self::newObj(); } return self::$_route_collection; } - //HELPERS================================================ /* * Find route files with names under pathname */ - public function crawl($basepath = __DIR__, $filenames = Array('Routes.php', 'routes.php') ){ + public function crawl($basepath = __DIR__, $filenames = Array('Routes.php', 'routes.php')) { $instance = self::getInstance(); $rdi = new \RecursiveDirectoryIterator($basepath); - foreach(new \RecursiveIteratorIterator($rdi) as $file){ + foreach (new \RecursiveIteratorIterator($rdi) as $file) { foreach ($filenames as $filename) { - if( strpos($file, $filename) ){ + if (strpos($file, $filename)) { $instance->_loaded_files[] = $file; } } @@ -68,46 +64,48 @@ class RouteCollection{ return $instance; } - /* + /** + * * Load the files with the routes */ - function load_routes(){ + function load_routes() { $instance = self::getInstance(); - foreach ($instance->_loaded_files as $loaded_file){ + foreach ($instance->_loaded_files as $loaded_file) { include $loaded_file; } return $instance; } - /* - * GET | POST | PUT | PATCH | DELETE | CLI + /** * + * GET | POST | PUT | PATCH | DELETE | CLI + * */ - private function define_verb(){ + private function define_verb() { $verb = ''; - if(isset($_POST['_method'])){ - $verb = strtoupper( $_POST['_method'] ); - }else if(php_sapi_name() == "cli"){ + if (isset($_POST['_method'])) { + $verb = strtoupper($_POST['_method']); + } else if (php_sapi_name() == "cli") { $verb = "CLI"; - }else{ - $verb = strtoupper( $_SERVER['REQUEST_METHOD'] ); + } else { + $verb = strtoupper($_SERVER['REQUEST_METHOD']); } - if(in_array($verb, self::$_verbs_whitelist)){ + if (in_array($verb, self::$_verbs_whitelist)) { $this->_verb = $verb; - }else{ + } else { echo 'Invalid Verb'; } } - /* + /** * */ - private function sort_routes(){ - usort($this->_routes, function($a, $b){ + private function sort_routes() { + usort($this->_routes, function($a, $b) { if ($a->_weight == $b->_weight) { return 0; } @@ -115,19 +113,19 @@ class RouteCollection{ }); } - /* - * Dispatch routes + /** + * */ - function submit(){ + function submit() { global $ROUTE; self::$_route_collection->sort_routes(); $one_hit = false; - foreach (self::$_route_collection->_routes as $route){ + foreach (self::$_route_collection->_routes as $route) { - if(!in_array( self::$_route_collection->_verb, $route->_verb) && !in_array( '*', $route->_verb) ){ + if (!in_array(self::$_route_collection->_verb, $route->_verb) && !in_array('*', $route->_verb)) { //No it is not continue; } @@ -135,7 +133,7 @@ class RouteCollection{ //Request match a route $match = $route->match(self::$_route_collection->_uri); - if($match){ + if ($match) { //Yup. Execute the route $ROUTE = $route; @@ -144,23 +142,23 @@ class RouteCollection{ $route->execute(); - if(!$route->_ignore){ + if (!$route->_ignore) { $one_hit = true; } - if($route->_http_error){ + if ($route->_http_error) { $this->http_error($route->_http_error); return; } //If Executed, interrupt route chain? - if($route->_block){ + if ($route->_block) { return; } } } - if(!$one_hit){ + if (!$one_hit) { $info = new \stdClass(); $info->code = 404; $info->message = 'Not Found'; @@ -170,7 +168,10 @@ class RouteCollection{ //DEFINITORS============================================= - static function get($uri, $callback, $weight = 0){ + /** + * + */ + static function get($uri, $callback, $weight = 0) { $route = new Route(); $route->_verb[] = 'GET'; @@ -184,7 +185,10 @@ class RouteCollection{ return $route; } - static function post($uri, $callback, $weight = 0){ + /** + * + */ + static function post($uri, $callback, $weight = 0) { $route = new Route(); $route->_verb[] = 'POST'; @@ -198,7 +202,10 @@ class RouteCollection{ return $route; } - static function put($uri, $callback, $weight = 0){ + /** + * + */ + static function put($uri, $callback, $weight = 0) { $route = new Route(); $route->_verb[] = 'PUT'; @@ -212,7 +219,10 @@ class RouteCollection{ return $route; } - static function patch($uri, $callback, $weight = 0){ + /** + * + */ + static function patch($uri, $callback, $weight = 0) { $route = new Route(); $route->_verb[] = 'PATCH'; @@ -226,7 +236,10 @@ class RouteCollection{ return $route; } - static function delete($uri, $callback, $weight = 0){ + /** + * + */ + static function delete($uri, $callback, $weight = 0) { $route = new Route(); $route->_verb[] = 'DELETE'; @@ -240,22 +253,22 @@ class RouteCollection{ return $route; } - static function resource($uri){ + static function resource($uri) { throw new Exception('Not implemented'); } - /* + /** * */ - static function add($verb, $uri, $callback, $weight = 0){ + static function add($verb, $uri, $callback, $weight = 0) { $route = new Route(); - if(is_array( $verb ) ){ + if (is_array($verb)) { $route->_verb = array_map('strtoupper', $verb); - }else if( strtoupper($verb) == 'WEB' ){ + } else if (strtoupper($verb) == 'WEB') { $route->_verb[] = self::_verbs_web; - }else{ - $route->_verb[] = strtoupper( $verb ); + } else { + $route->_verb[] = strtoupper($verb); } $route->_uri = $uri; @@ -268,37 +281,43 @@ class RouteCollection{ return $route; } - /* + /** * */ - function addRoute(Route $route){ + function addRoute(Route $route) { $this->_routes[] = $route; } - /* + /** * */ - static function addMiddleware($name = '', $function){ + static function addDefaultMiddleware($name = '', $function) { self::getInstance()->_default_middlewares[$name] = $function; } - /* + /** * */ - static function on_http_error($function){ + static function registerMiddleware($name = '', $function) { + self::getInstance()->_middleware_set[$name] = $function; + } + + /** + * + */ + static function on_http_error($function) { $instance = self::getInstance(); $instance->_errors[] = $function; } - /* + /** * */ - private function http_error(\stdClass $info){ + private function http_error(\stdClass $info) { $info = (array) $info; foreach ($this->_errors as $error) { call_user_func_array($error, $info); } - - } + }