Skip to content

eddmann/rootr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rootr

Routing URLs like a boss.

Build Status Coverage Status Scrutinizer Code Quality

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

Influenced By

About

Routing URLs like a boss.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published