Routing & Dispatching

Simple Implementation

Routers

This class can be used to add routes and what that route will do. For example:

$router = new Router();
$router->get('foo', function() { echo "GET foo\n"; });
<?php

class Router {

    private $routes = [
        'get' => [],
        'post' => []
    ];

    function get($pattern, callable $handler) {
        $this->routes['get'][$pattern] = $handler;
        return $this;
    }

    function post($pattern, callable $handler) {
        $this->routes['post'][$pattern] = $handler;
        return $this;
    }

    function match(Request $request) {
        $method = strtolower($request->getMethod());
        if (!isset($this->routes[$method])) {
            return false;
        }

        $path = $request->getPath();
        foreach ($this->routes[$method] as $pattern => $handler) {
            if ($pattern === $path) {
                return $handler;
            }
        }

        return false;
    }

}

Requests

This class is used to handle requests, and return methods and paths.

Dispatchers

  1. Add route using router class function GET and POST.

  2. The dispatcher will use router class, and MATCH with the routes from REQUEST.

  3. If there is a route, the function or handler will be ran.

References

Last updated

Was this helpful?