Explorar o código

Atualizar 'src/BBRouter/RouteCollection.php'

ahwelp %!s(int64=6) %!d(string=hai) anos
pai
achega
c6cdba991e
Modificáronse 1 ficheiros con 90 adicións e 71 borrados
  1. 90 71
      src/BBRouter/RouteCollection.php

+ 90 - 71
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 registerMiddleware($name = '', $function) {
+        self::getInstance()->_middleware_set[$name] = $function;
+    }
+
+    /**
      *
      */
-    static function on_http_error($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);
         }
-
-
     }
+
 }