PHP code example of divineniiquaye / flight-routing
1. Go to this page and download the library: Download divineniiquaye/flight-routing 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/ */
divineniiquaye / flight-routing example snippets
use Flight\Routing\{Router, RouteCollection};
$router = new Router();
$router->setCollection(static function (RouteCollection $routes) {
$routes->add('/blog/[{slug}]', handler: [BlogController::class, 'indexAction'])->bind('blog_show');
//... You can add more routes here.
});
use Flight\Routing\{Router, RouteCollection};
$routes = new RouteCollection();
$routes->get('/blog/{slug}*<indexAction>', handler: BlogController::class)->bind('blog_show');
$router = Router::withCollection($routes);
$request = ... // A PSR-7 server request initialized from global request
// Routing can match routes with incoming request
$route = $router->matchRequest($request);
// Should return an array, if request is made on a a configured route path (i.e /blog/lorem-ipsum)
// Routing can also generate URLs for a given route
$url = $router->generateUri('blog_show', ['slug' => 'my-blog-post']);
// $url = '/blog/my-blog-post' if stringified else return a GeneratedUri class object
use Flight\Routing\Handlers\RouteHandler;
use Laminas\HttpHandlerRunner\Emitter\SapiStreamEmitter;
$router->pipe(...); # Add PSR-15 middlewares ...
$handlerResolver = ... // You can add your own route handler resolver else default is null
$responseFactory = ... // Add PSR-17 response factory
$request = ... // A PSR-7 server request initialized from global request
// Default route handler, a custom request route handler can be used also.
$handler = new RouteHandler($responseFactory, $handlerResolver);
// Match routes with incoming request and return a response
$response = $router->process($request, $handler);
// Send response to the browser ...
(new SapiStreamEmitter())->emit($response);
use Biurad\Annotations\AnnotationLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;
use Flight\Routing\Annotation\Listener;
use Spiral\Attributes\{AnnotationReader, AttributeReader};
use Spiral\Attributes\Composite\MergeReader;
$reader = new AttributeReader();
// If you only want to use PHP 8 attribute support, you can skip this step and set reader to null.
if (\class_exists(AnnotationRegistry::class)) $reader = new MergeReader([new AnnotationReader(), $reader]);
$loader = new AnnotationLoader($reader);
$loader->listener(new Listener(), 'my_routes');
$loader->resource('src/Controller', 'src/Bundle/BundleName/Controller');
$annotation = $loader->load('my_routes'); // Returns a Flight\Routing\RouteCollection class instance
namespace Demo\Controller;
class UserController {
public function getUser(int $id): string {
return "get {$id}";
}
public function postUser(int $id): string {
return "post {$id}";
}
public function deleteUser(int $id): string {
return "delete {$id}";
}
}
use Flight\Routing\Handlers\ResourceHandler;
$routes->add('/user/{id:\d+}', ['GET', 'POST'], new ResourceHandler(Demo\UserController::class, 'user'));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.