Skip to content

Installation ​

Requirements ​

  • PHP 8.3 or later within PHP 8.x (^8.3)
  • Composer

Projects on PHP 8.1 or 8.2 can stay on version 3.5.

Composer ​

Install Solo Router 4:

bash
composer require "solophp/router:^4.0"

These pages document version 4.1.0. When upgrading an existing application, follow the v3 to v4 migration guide.

Dependencies and integrations ​

The core package requires only PHP. It has no dependency on solophp/contracts and implements neither of its v3 router interfaces. Integrations should use the v4 builder and typed resolution API; see migration.

Basic setup ​

php
use Solo\Router\RouteCollector;
use Solo\Router\Results\Matched;
use Solo\Router\Results\MethodNotAllowed;

$routes = new RouteCollector();
$routes->get('/', [HomeController::class, 'index']);
$routes->get('/about', [PageController::class, 'about']);
$router = $routes->build();

$method = $_SERVER['REQUEST_METHOD'];
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if (!is_string($uri)) {
    http_response_code(400);
    return;
}

$result = $router->resolve($method, $uri);
if ($result instanceof Matched) {
    $handler = $result->route->handler;
    $params = $result->params;
    // Dispatch with your application's controller and middleware integration.
} elseif ($result instanceof MethodNotAllowed) {
    http_response_code(405);
    header('Allow: ' . implode(', ', $result->allowedMethods));
} else {
    http_response_code(404);
}

Next steps ​

Released under the MIT License.