Muhammad Usman

Crazy tech lover, endless learner
Home

PHP Router in 140 Characters

This is a dimple(damn simple) URL routing script for PHP which is written in just 140 characters of code, so it fits within a tweet.

It’s NOT a good router at all, don’t use it in a real application, it’s not exception handled either. I did it just for fun and to demonstrate the simplicity.

So here’s the router code, and that’s all (seriously).

   
class R{  
function a($r,callable $c){$this->r[$r]=$c;}  
function e(){$s=$_SERVER;$i='PATH_INFO';$p=isset($s\[$i])?$s[$i]:'/';$this->r[$p\]();}  
}  

Fork on GitHub

Usage

Create a file index.php in your server root and try this code

   
<?php
// The router code
class R{function a($r,callable $c){$this->r[$r]=$c;}
function e(){$s=$_SERVER;$i='PATH_INFO';$p=isset($s\[$i])?$s[$i]:'/';$this->r[$p\]();}}  
//

// Create  
$router = new R();

// Add a route with a callback function  
$router->a('/a', 'callbackFunction');

// Add a route with a closure  
$router->a('/b', function() {  
    echo 'Hello B';  
});

// Add homepage route  
$router->a('/', function() {  
    echo 'Hello World';  
});

// Add route with class method  
$router->a('/c', [new Foo, 'bar']);  
// Add multiple slashed route with class method  
$router->a('/c/d', [new Foo, 'bar']);

// Execute the route  
$router->e();

// Callback handlers  
function callbackFunction() {  
    echo 'Hello A';  
}

class Foo {  
    function bar() {  
        echo 'Hello Bar';  
    }  
}  

Now visit your server root http://localhost/index.php, http://localhost/index.php/a, http://localhost/index.php/b, http://localhost/index.php/c and http://localhost/index.php/c/d.

Or you may run built-in PHP server from the command line (in the same dir)

   
php -S localhost:8081  

and visit http://localhost:8081/index.php.

Runs on 5.4+. 140 chars idea is inspired by Fabien Potencier’s Twittee.