| 
<?php
 // In case one is using PHP 5.4's built-in server
 $filename = __DIR__ . preg_replace('#(\?.*)$#', '', $_SERVER['REQUEST_URI']);
 if (php_sapi_name() === 'cli-server' && is_file($filename)) {
 return false;
 }
 
 // Include the Router class
 // @note: it's recommended to just use the composer autoloader when working with other packages too
 require_once __DIR__ . '/../src/Bramus/Router/Router.php';
 
 // Create a Router
 $router = new \Bramus\Router\Router();
 
 // Custom 404 Handler
 $router->set404(function () {
 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
 echo '404, route not found!';
 });
 
 // Before Router Middleware
 $router->before('GET', '/.*', function () {
 header('X-Powered-By: bramus/router');
 });
 
 // Static route: / (homepage)
 $router->get('/', function () {
 echo '<h1>bramus/router</h1><p>Try these routes:<p><ul><li>/hello/<em>name</em></li><li>/blog</li><li>/blog/<em>year</em></li><li>/blog/<em>year</em>/<em>month</em></li><li>/blog/<em>year</em>/<em>month</em>/<em>day</em></li><li>/movies</li><li>/movies/<em>id</em></li></ul>';
 });
 
 // Static route: /hello
 $router->get('/hello', function () {
 echo '<h1>bramus/router</h1><p>Visit <code>/hello/<em>name</em></code> to get your Hello World mojo on!</p>';
 });
 
 // Dynamic route: /hello/name
 $router->get('/hello/(\w+)', function ($name) {
 echo 'Hello ' . htmlentities($name);
 });
 
 // Dynamic route: /ohai/name/in/parts
 $router->get('/ohai/(.*)', function ($url) {
 echo 'Ohai ' . htmlentities($url);
 });
 
 // Dynamic route with (successive) optional subpatterns: /blog(/year(/month(/day(/slug))))
 $router->get('/blog(/\d{4}(/\d{2}(/\d{2}(/[a-z0-9_-]+)?)?)?)?', function ($year = null, $month = null, $day = null, $slug = null) {
 if (!$year) {
 echo 'Blog overview';
 
 return;
 }
 if (!$month) {
 echo 'Blog year overview (' . $year . ')';
 
 return;
 }
 if (!$day) {
 echo 'Blog month overview (' . $year . '-' . $month . ')';
 
 return;
 }
 if (!$slug) {
 echo 'Blog day overview (' . $year . '-' . $month . '-' . $day . ')';
 
 return;
 }
 echo 'Blogpost ' . htmlentities($slug) . ' detail (' . $year . '-' . $month . '-' . $day . ')';
 });
 
 // Subrouting
 $router->mount('/movies', function () use ($router) {
 
 // will result in '/movies'
 $router->get('/', function () {
 echo 'movies overview';
 });
 
 // will result in '/movies'
 $router->post('/', function () {
 echo 'add movie';
 });
 
 // will result in '/movies/id'
 $router->get('/(\d+)', function ($id) {
 echo 'movie id ' . htmlentities($id);
 });
 
 // will result in '/movies/id'
 $router->put('/(\d+)', function ($id) {
 echo 'Update movie id ' . htmlentities($id);
 });
 });
 
 // Thunderbirds are go!
 $router->run();
 
 // EOF
 
 |