aboutsummaryrefslogtreecommitdiff

php-router

Just another PHP router. Simple and fast.

Usage

Route syntax

{} is for enumeration of predefined strings, like: {value1,value2,value3}.

() is for regular expressions, like: ([\w\d]+).

See examples.

Code example

$router = new router;

// main page, returned value will be `index`
$router->add('/', 'index');

// for `/test2.html`, returned value will be `test_html id=2`
$router->add('/test(\d).html', 'test_html id=$(1)');

// for `/contacts/`, returned value will be `contacts`
$router->add('{contacts,about}/', '${1}');

// for `/section2/123/action1/`, returned value will be 'section section=section2_123 action=action1'
$router->add('{section1,section2}/(\d+)/{action1,action2}/', 'section section=${1}_$(1) action=${2}');

$route = $router->find($_SERVER['DOCUMENT_URI']);
if ($route === false) {
    // NOT FOUND
}

// parse value
$route = preg_split('/ +/', $route);
$page = $route[0];
$input = [];
if (count($route) > 1) {
    for ($i = 1; $i < count($route); $i++) {
        $var = $route[$i];
        list($k, $v) = explode('=', $var);
        $input[$k] = $v;
    }
}

API

add($route, $value) - Add route. $value is a string in any form.

find($route) - Find route. Returns compiled $value or false if not found.

dump() - Returns internal routes tree (for serialization, e.g. for production usage).

load($tree) - Loads routes tree, previously returned by dump().

License

MIT