Awesome
chubbyphp-framework-router-fastroute
Description
Fastroute Router implementation for chubbyphp-framework.
Requirements
- php: ^8.2
- chubbyphp/chubbyphp-framework: ^5.1
- chubbyphp/chubbyphp-http-exception: ^1.1
- nikic/fast-route: ^1.3|2.0.0-beta1|^2.0
- psr/http-message: ^1.1|^2.0
Installation
Through Composer as chubbyphp/chubbyphp-framework-router-fastroute.
composer require chubbyphp/chubbyphp-framework-router-fastroute "^2.2"
Usage
<?php
declare(strict_types=1);
namespace App;
use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\Middleware\ExceptionMiddleware;
use Chubbyphp\Framework\Middleware\RouteMatcherMiddleware;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\FastRoute\RouteMatcher;
use Chubbyphp\Framework\Router\Route;
use Chubbyphp\Framework\Router\RoutesByName;
use Psr\Http\Message\ServerRequestInterface;
use Slim\Psr7\Factory\ResponseFactory;
use Slim\Psr7\Factory\ServerRequestFactory;
require __DIR__.'/vendor/autoload.php';
$responseFactory = new ResponseFactory();
$app = new Application([
new ExceptionMiddleware($responseFactory, true),
new RouteMatcherMiddleware(new RouteMatcher(new RoutesByName([
Route::get('/hello/{name:[a-z]+}', 'hello', new CallbackRequestHandler(
static function (ServerRequestInterface $request) use ($responseFactory) {
$response = $responseFactory->createResponse();
$response->getBody()->write(sprintf('Hello, %s', $request->getAttribute('name')));
return $response;
}
))
]))),
]);
$app->emit($app->handle((new ServerRequestFactory())->createFromGlobals()));
Copyright
2024 Dominik Zogg