OSDN Git Service

Modify RouterCollection to use `SplObjectStorage`
authorJefersson Nathan <admin@phpse.net>
Tue, 17 Jun 2014 13:20:23 +0000 (10:20 -0300)
committerJefersson Nathan <admin@phpse.net>
Tue, 17 Jun 2014 13:20:23 +0000 (10:20 -0300)
- This make the RouterCollection class more simple and clean.
- More fast, because SplObjectStorage is implemented in C

README.md
example.php
src/PHPRouter/RouteCollection.php

index fc38946..bcb6476 100755 (executable)
--- a/README.md
+++ b/README.md
@@ -27,12 +27,12 @@ use PHPRouter\Router;
 use PHPRouter\Route;
 
 $collection = new RouteCollection();
-$collection->add('users', new Route('/users/', array(
+$collection->attach(new Route('/users/', array(
     '_controller' => 'someController::users_create',
     'methods' => 'GET'
 )));
 
-$collection->add('index', new Route('/', array(
+$collection->attach(new Route('/', array(
     '_controller' => 'someController::indexAction',
     'methods' => 'GET'
 )));
@@ -80,4 +80,4 @@ Have a look at the example.php file or read trough the class' documentation for
 If you like PHP Router you might also like [AltoRouter](//github.com/dannyvankooten/AltoRouter).
 
 ## License
-MIT Licensed, http://www.opensource.org/licenses/MIT
\ No newline at end of file
+MIT Licensed, http://www.opensource.org/licenses/MIT
index 4181030..964cda8 100755 (executable)
@@ -1,4 +1,6 @@
 <?php
+date_default_timezone_set('America/Sao_Paulo');
+
 //require __DIR__.'/vendor/autoload.php';
 require 'src\PHPRouter\RouteCollection.php';
 require 'src\PHPRouter\Router.php';
@@ -9,12 +11,12 @@ use PHPRouter\Router;
 use PHPRouter\Route;
 
 $collection = new RouteCollection();
-$collection->add('users', new Route('/users/', array(
+$collection->attach(new Route('/users/', array(
     '_controller' => 'someController::users_create',
     'methods' => 'GET'
 )));
 
-$collection->add('index', new Route('/', array(
+$collection->attach(new Route('/', array(
     '_controller' => 'someController::indexAction',
     'methods' => 'GET'
 )));
@@ -41,4 +43,4 @@ var_dump($route);
 <p><a href="<?php echo $router->generate('contact'); ?>"><?php echo $router->generate('contact'); ?></a></p>
 <p><form action="" method="POST"><input type="submit" value="Post request to current URL" /></form></p>
 <p><form action="<?php echo $router->generate('users_create'); ?>" method="POST"><input type="submit" value="POST request to <?php echo $router->generate('users_create'); ?>" /></form></p>
-<p><a href="<?php echo $router->generate('users_list'); ?>">GET request to <?php echo $router->generate('users_list'); ?></p>
\ No newline at end of file
+<p><a href="<?php echo $router->generate('users_list'); ?>">GET request to <?php echo $router->generate('users_list'); ?></p>
index be42f15..e77f5a7 100755 (executable)
@@ -1,57 +1,21 @@
 <?php\r
 namespace PHPRouter;\r
 \r
-use Iterator;\r
-\r
-class RouteCollection implements Iterator\r
+class RouteCollection extends \SplObjectStorage\r
 {\r
-    private $_routes = array();\r
-\r
-    public function add($uri, Route $action)\r
-    {\r
-        $this->_routes[$uri] = $action;\r
-    }\r
-\r
-    public function remove($uri)\r
-    {\r
-        unset($this->_routes[$uri]);\r
-    }\r
-\r
-    public function get($uri)\r
-    {\r
-        return $this->_routes[$uri];\r
-    }\r
-\r
-    public function current()\r
-    {\r
-        return current($this->_routes);\r
-    }\r
-\r
-    public function next()\r
-    {\r
-        next($this->_routes);\r
-    }\r
-\r
+    /**\r
+     * Fetch all routers stored on this collection of router\r
+     * and return it.\r
+     *\r
+     * @return array\r
+     */ \r
     public function all()\r
     {\r
-        return $this->_routes;\r
-    }\r
-\r
-    public function key()\r
-    {\r
-        return key($this->_routes);\r
-    }\r
-\r
-    public function valid()\r
-    {\r
-        if ($this->_routes) {\r
-            return true;\r
-        }\r
-        return false;\r
-    }\r
-\r
-    public function rewind()\r
-    {\r
-        reset($this->_routes);\r
+       $_tmp = array();\r
+        foreach($this as $objectValue)\r
+       {\r
+           $_tmp[] = $objectValue;\r
+       }\r
+       return $_tmp;\r
     }\r
-}
\ No newline at end of file
+}\r