bonfim/router

A fast and powerful router that maps route callbacks to specific HTTP request methods and URIs. It supports parameters and pattern matching

v1.0.2 2018-08-26 17:55 UTC

This package is auto-updated.

Last update: 2024-11-06 15:14:20 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

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.