Router
![Software License][ico-license]
![Coverage Status][ico-scrutinizer]
![Total Downloads][ico-downloads], (*1)
Install
Via Composer, (*2)
``` bash
$ composer require bonfim/router, (*3)
Basic Usage
-----------
Include the autoloader of composer:
```php
<?php
include 'vendor/autoload.php';
and define your routes:, (*4)
use Bonfim\Router\Route;
Route::get('/', function () {
echo 'Hello World!';
});
Routing
The routing is done by matching a URL pattern with a callback function:, (*5)
Route::get('/', function () {
echo 'Hello World!';
});
The callback can be any object that is callable. So you can use a regular function:, (*6)
function hello()
{
echo 'Hello World!';
}
Route::get('/', 'hello');
Or a class method:, (*7)
class Greeting
{
public static function hello()
{
echo 'Hello World!';
}
}
Route::get('/', ['Greeting', 'hello']);
Or an object method:, (*8)
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., (*9)
Method Routing
The router allows you to register routes that respond to any HTTP verb:, (*10)
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:, (*11)
Route::match(['get', 'post'], '/', function() {
//
});
Or, you may even register a route that responds to all HTTP verbs using the any
method:, (*12)
Route::any('/', function() {
//
});
Named Parameters
You may specify named parameters in your routes which will be passed along to your callback function:, (*13)
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:, (*14)
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., (*15)
Testing
bash
$ composer test
, (*16)
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details., (*17)
Security
If you discover any security related issues, please email inbox.edsononildo@gmail.com instead of using the issue tracker., (*18)
Credits
License
The MIT License (MIT). Please see License File for more information., (*19)