https://github.com/eddmann/rootr
Routing URLs like a boss.
https://github.com/eddmann/rootr
Last synced: 6 months ago
JSON representation
Routing URLs like a boss.
- Host: GitHub
- URL: https://github.com/eddmann/rootr
- Owner: eddmann
- Created: 2014-05-24T16:50:16.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2014-06-02T12:19:20.000Z (about 12 years ago)
- Last Synced: 2025-01-23T03:26:44.727Z (over 1 year ago)
- Language: PHP
- Size: 273 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
rootr
=====
_Routing URLs like a boss._
[](https://travis-ci.org/eddmann/rootr)
[](https://coveralls.io/r/eddmann/rootr?branch=master)
[](https://scrutinizer-ci.com/g/eddmann/rootr/?branch=master)
## Install
Get composer:
wget http://getcomposer.org/composer.phar
Then add this to a `composer.json` in your project's root:
{
"require": {
"eddmann/rootr": "*"
}
}
Now install:
php composer.phar install
## Closure Example
```php
get('/', function () {
return '/';
});
$router->get('/products', function () {
return '/products';
});
$router->get('/products/{id:\d+}', function ($id) {
return "/products/$id";
});
$router->get('/products/show/{id:\d+}/{?name}', function ($id, $name = 'na') {
return "/products/show/$id/$name";
});
$router->get('/product.json', function () {
$product = json_encode([ 'name' => 'Cheese', 'value' => 12.55 ]);
return (new Rootr\Response(200, $product))->asJson();
});
$dispatcher = new Rootr\Dispatcher($router);
$response = $dispatcher->dispatch('GET', '/products/4');
$response->render(); // /products/4
```
## Controller Example
```php
get('/', function () {
return '/';
});
$router->mountController('/products', 'ProductController');
$dispatcher = new Rootr\Dispatcher($router);
$response = $dispatcher->dispatch('GET', '/products/show/2/cheese');
$response->render(); // /products/show/2/cheese
```
## Examples
You can run the examples using PHP's built-in web server by running the following:
./examples.sh
## Influenced By
- [FastRoute](https://github.com/nikic/FastRoute)
- [Pux](https://github.com/c9s/Pux)