bonfim / router
A fast and powerful router that maps route callbacks to specific HTTP request methods and URIs. It supports parameters and pattern matching
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
This package is auto-updated.
Last update: 2024-11-06 15:14:20 UTC
README
Install
Via Composer
$ composer require bonfim/router
Basic Usage
Include the autoloader of composer:
<?php include 'vendor/autoload.php';
and define your routes:
use Bonfim\Router\Route; Route::get('/', function () { echo 'Hello World!'; });
Routing
The routing is done by matching a URL pattern with a callback function:
Route::get('/', function () { echo 'Hello World!'; });
The callback can be any object that is callable. So you can use a regular function:
function hello() { echo 'Hello World!'; } Route::get('/', 'hello');
Or a class method:
class Greeting { public static function hello() { echo 'Hello World!'; } } Route::get('/', ['Greeting', 'hello']);
Or an object method:
class Greeting { private $name; public function __construct() { $this->name = 'Edson Onildo'; } public function hello() { echo 'Hello, {$this->name}!'; } } $greeting = new Greeting(); Route::get('/', [$greeting, 'hello']);
Routes are matched in the order they are defined. The first route to match a request will be invoked.
Method Routing
The router allows you to register routes that respond to any HTTP verb:
Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback);
You may register a route that responds to multiple verbs using the match
method:
Route::match(['get', 'post'], '/', function() { // });
Or, you may even register a route that responds to all HTTP verbs using the any
method:
Route::any('/', function() { // });
Named Parameters
You may specify named parameters in your routes which will be passed along to your callback function:
Route::get('/@name/@id', function($name, $id) { echo "hello, $name ($id)!"; });
You can also include regular expressions with your named parameters by using the : delimiter:
Route::get('/@name/@id:[0-9]{3}', function($name, $id) { // This will match /bob/123 // But will not match /bob/12345 });
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email inbox.edsononildo@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.