eddmann / rootr
There is no license information available for the latest version (dev-master) of this package.
Routing URLs like a boss.
dev-master
2014-06-02 12:18 UTC
Requires
- php: >=5.4.0
- jeremeamia/superclosure: dev-multiple-parsers
Requires (Dev)
- hamcrest/hamcrest-php: 1.1.*
- mockery/mockery: @stable
- phpunit/phpunit: 4.1.*
- satooshi/php-coveralls: dev-master
- squizlabs/php_codesniffer: 1.*
This package is not auto-updated.
Last update: 2020-01-06 08:13:31 UTC
README
Routing URLs like a boss.
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 $router = new Rootr\Router; $router->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 $router = new Rootr\Router; class ProductController extends Rootr\Controller { public function indexAction() { return '/products'; } /** * @method GET * @route /{id:\d+} */ public function displayByIdAction($id) { return "/products/$id"; } public function showAction($id, $name = 'na') { return "/products/show/$id/$name"; } } $router->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