OSDN Git Service

Merge branch 'feature/find_by_name'
[php-libraries/Router.git] / README.md
old mode 100644 (file)
new mode 100755 (executable)
index 44ce367..1891efb
--- a/README.md
+++ b/README.md
-# Simple PHP Router class
+# PHP Router class
 
-A simple Router class that supports REST routing, named routes and reverse routing. 
+A simple Rails inspired PHP router class.
+
+* Usage of different HTTP Methods
+* REST / Resourceful routing
+* Reversed routing using named routes
+* Dynamic URL's: use URL segments as parameters.
+
+# Authors
+
+- [Danny van Kooten](https://github.com/dannyvankooten)
+- [Jefersson Nathan](https://github.com/malukenho)
+
+# Easy to install with **composer**
+
+```sh
+$ composer require frostbane/php-router
+```
 
 ## Usage
 
-    <?php
-    require 'Router.php';
+### Friendly URL
+
+Create a simple .htaccess file on your root directory if you're using Apache with mod_rewrite enabled.
+
+```apache
+Options +FollowSymLinks
+RewriteEngine On
+RewriteRule ^(.*)$ index.php [NC,L]
+```
+
+If you're using nginx, setup your server section as following:
+
+```nginx
+server {
+       listen 80;
+       server_name mydevsite.dev;
+       root /var/www/mydevsite/public;
+
+       index index.php;
+
+       location / {
+               try_files $uri $uri/ /index.php?$query_string;
+       }
+
+       location ~ \.php$ {
+               fastcgi_split_path_info ^(.+\.php)(/.+)$;
+               # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
+
+               # With php5-fpm:
+               fastcgi_pass unix:/var/run/php5-fpm.sock;
+               fastcgi_index index.php;
+               include fastcgi.conf;
+               fastcgi_intercept_errors on;
+       }
+}
+```
+
+This is a simple example of routers in action
+
+```php
+<?php
+require __DIR__.'/vendor/autoload.php';
+
+use PHPRouter\RouteCollection;
+use PHPRouter\Router;
+use PHPRouter\Route;
+
+$collection = new RouteCollection();
+$collection->attachRoute(new Route('/users/', array(
+    '_controller' => 'someController::usersCreate',
+    'methods' => 'GET'
+)));
+
+$collection->attachRoute(new Route('/', array(
+    '_controller' => 'someController::indexAction',
+    'methods' => 'GET'
+)));
+
+$router = new Router($collection);
+$router->setBasePath('/PHP-Router');
+$route = $router->matchCurrentRequest();
+
+var_dump($route);
+```
+
+## Load routers from a `yaml` file
+
+We can define in a `yaml` file all the routes of our application. This facilitates our life when we need to *migrate*, *modify*, or later *add* new routes.
 
-    $r = new Router();
+The route definition should follow the example below:
 
-    // maps / to controller 'users' and method 'index'.
-    $r->match('/','users#index');
+```yaml
+base_path: /blog
 
-    // maps /user/5 to controller 'users', method 'show' with parameter 'id' => 5
-    $r->match('/user/:id','users#show');
+routes:
+  index: [/index, someClass.indexAction, GET]
+  contact: [/contact, someClass.contactAction, GET]
+  about: [/about, someClass.aboutAction, GET]
+```
+In our **Front Controller** would have something like:
 
-    // maps POST request to /users/ to controller 'users' and method 'create'
-    $r->match('/users','users#create',array('via' => 'post'));
+```php
+<?php
+require __DIR__.'/vendor/autoload.php';
 
+use PHPRouter\RouteCollection;
+use PHPRouter\Config;
+use PHPRouter\Router;
+use PHPRouter\Route;
 
-    // maps /users/5/edit to controller 'users', method 'edit' with parameters 'id' => 5.
-    $r->match('/user/:id/edit','users#edit',array('via' => 'get', 'as' => 'user_edit_page'));
+$config = Config::loadFromFile(__DIR__.'/router.yaml');
+$router = Router::parseConfig($config);
+$router->matchCurrentRequest();
+```
 
-    // echoes /users/5/edit
-    echo $r->url_for_route('user_edit_page',array('id' => '5'));
+## More information
 
+If you like PHP Router you might also like [AltoRouter](//github.com/dannyvankooten/AltoRouter).
 
-    if($r->hasRoute()) {
-        extract($r->getRoute());
-        ?>
-        <h1>Route found!</h1>
-        <p><b>Controller: </b><?php echo $controller; ?></p>
-        <p><b>Action: </b><?php echo $action; ?></p>
-        <p><b>Params: </b><?php var_dump($params); ?></p>
-        <?php
-    } else {
-        ?><h1>No route found.</h1><?php
-    }
+## License
 
-Have a look at example.php or read trough the class' documentation for a better understanding on how to use this class.
\ No newline at end of file
+MIT Licensed, http://www.opensource.org/licenses/MIT