1. Go to this page and download the library: Download quimcalpe/router library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
quimcalpe / router example snippets
// Require composer autoloader
use QuimCalpe\Router\Dispatcher\SimpleDispatcher;
// Create Router instance
$router = new Router();
// Define routes, last parameter defining route name is optional
$router->addRoute('GET', '/users', 'Quimi\Controllers\UserController', 'user_list');
$router->addRoute('GET', '/users/edit/{id:number}', 'Quimi\Controllers\UserController::edit', 'user_edit');
$router->addRoute(['POST', 'DELETE'], '/users/remove/{id:number}', 'Quimi\Controllers\UserController::remove', 'user_delete');
// Sugar methods for common verbs are also available (GET, POST, PUT, DELETE...)
$router->addGet('/user/{id}', 'Quimi\Controllers\UserController::show', 'user_show');
// You can also create a QuimCalpe\Router\Route\Route value object and add directly to router's `->add()`
$route = new Route('GET', '/', 'Quimi\Controllers\HomeController', 'home');
$router->add($route);
try {
// Match routes
$route = $router->parse($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
// Dispatch route
$dispatcher = new SimpleDispatcher();
$response = $dispatcher->handle($route);
} catch (QuimCalpe\Router\Exception\MethodNotAllowedException $e) {
header('HTTP/1.0 405 Method Not Allowed');
// exception message contains allowed methods
header('Allow: '.$e->getMessage());
} catch (QuimCalpe\Router\Exception\RouteNotFoundException $e) {
header('HTTP/1.0 404 Not Found');
// not found....
}
use QuimCalpe\Router\Router;
use QuimCalpe\Router\Route\Route;
$routes = [
new Route('GET', '/users', 'Quimi\Controllers\UserController', 'user_list'),
new Route('GET', '/users/edit/{id:number}', 'Quimi\Controllers\UserController::edit', 'user_edit'),
new Route(['POST', 'DELETE'], '/users/remove/{id:number}', 'Quimi\Controllers\UserController::remove', 'user_delete'),
]
$router = new Router($routes);
namespace My\Package;
use QuimCalpe\Router\Route\Route;
use QuimCalpe\Router\Route\RouteProvider;
class MyPackageRoutes implements RouteProvider
{
public function routes(): array
{
return [
new Route('GET', '/users', 'Quimi\Controllers\UserController', 'user_list'),
new Route('GET', '/users/edit/{id:number}', 'Quimi\Controllers\UserController::edit', 'user_edit'),
new Route(['POST', 'DELETE'], '/users/remove/{id:number}', 'Quimi\Controllers\UserController::remove', 'user_delete'),
];
}
}
$router = new Router();
$router->addRouteProvider(new \My\Package\MyPackageRoutes());
use Symfony\Component\HttpFoundation\Request;
use QuimCalpe\Router\Router;
use QuimCalpe\Router\Dispatcher\RequestResponseDispatcher;
$router = new Router();
$router->addRoute('GET', '/users', 'Quimi\Controllers\UserController::index');
$request = Request::createFromGlobals();
$route = $router->parse($request->getMethod(), $request->getPathInfo());
// You can optionally modify the request object here before dispatching:
$request->attributes->set('foo', 'bar');
$dispatcher = new RequestResponseDispatcher($request);
$response = $dispatcher->handle($route);
$response->send();
use QuimCalpe\Router\Router;
use QuimCalpe\Router\Route\Route;
use QuimCalpe\Router\Dispatcher\PSR7Dispatcher;
use function QuimCalpe\ResponseSender\send AS send_response;
use Zend\Diactoros\ServerRequestFactory;
use Zend\Diactoros\Response;
$router = new Router();
$router->add(new Route("GET", "/test", "ControllerFoo"));
$request = ServerRequestFactory::fromGlobals();
$route = $router->parse($request->getMethod(), $request->getUri()->getPath());
$dispatcher = new PSR7Dispatcher($request, new Response());
$response = $dispatcher->handle($route);
send_response($response);
interface DispatcherInterface
{
public function handle(ParsedRoute $route): mixed;
}
$router = new Router();
$router->addRoute('GET', '/users', 'Controller');
$router->parse('GET', '/users'); // => OK!
$router->parse('GET', '/users/'); // => NOT FOUND