Skip to content

Sroute Documentation

Sroute is a lightweight, zero-dependency routing library for PHP. It supports RESTful methods, named routes, middleware, and controller-based routing.

Terminal window
composer require krag/sroute

Create an index.php file in your project root:

<?php
require __DIR__ . '/vendor/autoload.php';
use Krag\Sroute\Router;
$router = new Router();
$router->get('/', function() {
echo "Hello World!";
});
$router->load();

Sroute supports controller classes, method injection, and middleware.

<?php
use Krag\Sroute\Router;
use Controllers\AuthController;
use Controllers\PublicController;
use Controllers\UserController;
use Middleware\AuthMiddleware;
use Middleware\GuestMiddleware;
use Middleware\CsrfMiddleware;
$router = new Router();
// Register Middleware Aliases
$router->aliasMiddleware('auth', AuthMiddleware::class);
$router->aliasMiddleware('guest', GuestMiddleware::class);
$router->aliasMiddleware('csrf', CsrfMiddleware::class);
// Public Routes
$router->get('/', PublicController::class, 'home')->name('landing.home');
$router->get('/about', PublicController::class, 'about')->name('landing.about');
// Authentication Routes
$router->get('/login', AuthController::class, 'showLogin')->middleware(['guest'])->name('auth.login.get');
$router->post('/login', AuthController::class, 'login')->middleware(['csrf', 'guest'])->name('auth.login.post');
// Protected Routes
$router->get('/dashboard', UserController::class, 'showDashboard')->middleware(['auth'])->name('dashboard');
// Route with Parameters
$router->get('/orders/{id}', OrderController::class, 'show')->middleware(['auth'])->name('orders.show');
// Dispatch the router
$router->load();
  • RESTful Verbs: GET, POST, PUT, PATCH, DELETE support.
  • Named Routes: Generate URLs for routes using their names.
  • Middleware: Chainable middleware support.
  • Controller Support: Clean syntax for controller-based routing.
  • Zero Dependencies: Lightweight and fast.

Register a GET route.

  • $uri: The URI pattern (e.g., /users/{id}).
  • $callback: Closure or Controller class name.
  • $classMethod: Method name if $callback is a class name.

post($uri, $callback, $classMethod = null)

Section titled “post($uri, $callback, $classMethod = null)”

Register a POST route.

Attach middleware to the defined route.

Assign a name to the route for reverse routing.

Dispatch the router to handle the current request.