designcise / bitframe-fastroute
FastRoute router middleware for BitFrame microframework
v4.0.0
2023-07-01 23:47 UTC
Requires
- php: >=8.2
- designcise/bitframe: ^4.0
- psr/http-message: ^2.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpmd/phpmd: @stable
- phpspec/prophecy: ^1.13
- phpspec/prophecy-phpunit: ^v2.0
- phpstan/phpstan: *
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: 3.*
README
FastRoute wrapper class to manage http routes as a middleware.
Installation
Install using composer:
$ composer require designcise/bitframe-fastroute
Please note that this package requires PHP 8.2.0 or newer.
Examples
Using Attributes for Route Declaration
class SomeController { #[Route(['GET'], '/hello/123')] public function indexAction( ServerRequestInterface $request, RequestHandlerInterface $handler, ): ResponseInterface { $response = $handler->handle($request); $response->getBody()->write( "BitFramePHP - 👋 Build Something Amazing Today!" ); return $response; } }
use BitFrame\App; use BitFrame\Emitter\SapiEmitter; use BitFrame\FastRoute\Router; use SomeController; require 'vendor/autoload.php'; $app = new App(); $router = new Router(); $router->registerControllers([ new SomeController(), ]); $app->run([ SapiEmitter::class, $router, // ... ]);
Using Inline Callback to Handle Route
use BitFrame\App; use BitFrame\Emitter\SapiEmitter; use BitFrame\FastRoute\Router; require 'vendor/autoload.php'; $app = new App(); $router = new Router(); $router->map(['GET', 'POST'], '/test', function ($request, $handler) { $response = $handler->handle($request); $response->getBody()->write('Test Page'); return $response; }); $app->run([ SapiEmitter::class, $router, // ... ]);
Tests
To run the tests you can use the following commands:
Command | Type |
---|---|
composer test |
PHPUnit tests |
composer style |
CodeSniffer |
composer md |
MessDetector |
composer check |
PHPStan |
Contributing
- File issues at https://github.com/designcise/bitframe-fastroute/issues
- Issue patches to https://github.com/designcise/bitframe-fastroute/pulls
License
Please see License File for licensing information.