PHPackages                             alirezasalehizadeh/routail - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. alirezasalehizadeh/routail

ActiveLibrary

alirezasalehizadeh/routail
==========================

A spidey PHP router.

v1.0.0(2y ago)5261MITPHPPHP ^8.2.0

Since Oct 31Pushed 2y ago1 watchersCompare

[ Source](https://github.com/alirezasalehizadeh/Routail)[ Packagist](https://packagist.org/packages/alirezasalehizadeh/routail)[ RSS](/packages/alirezasalehizadeh-routail/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (1)

[![](art/routail.png)](art/routail.png)

A spidey PHP router like Tarantulas

Features
--------

[](#features)

- Support `get`, `post`, `put`, `patch`, `delete` and `any` method
- Support optional parameter
- Middlewares
- Route group
- Url generator

Requirements
------------

[](#requirements)

PHP &gt;= 8.2

Getting Started
---------------

[](#getting-started)

#### Installation

[](#installation)

via Composer

```
composer require alirezasalehizadeh/routail

```

#### Route definition

[](#route-definition)

The example below, is a quick view of how you can define an route and run it

```
use AlirezaSalehizadeh\Routail\Router;

$router = new Router();

$router->get(string $pattern, string|array|Closure $action)
  ->name(string $name)
  ->prefix(string $prefix)
  ->middleware(array $middlewares);

$router->run();
```

#### Route group definition

[](#route-group-definition)

```
use AlirezaSalehizadeh\Routail\Router;

$router = new Router();

$router->group(Closure $action, array $middlewares, string $prefix);

$router->run();
```

Usage
-----

[](#usage)

#### Middlewares

[](#middlewares)

To use middlewares, you need to create a class that extends from the `AlirezaSalehizadeh\Routail\Middleware` class and implement the `handle` method that returns a boolean

```
use AlirezaSalehizadeh\Routail\Request;
use AlirezaSalehizadeh\Routail\Middleware\Middleware;

class FooMiddleware extends Middleware
{
    public function handle(Request $request): bool
    {
        return true;
    }
}
```

#### Url generator

[](#url-generator)

By `url` method, you can create url from route name easily

```
use AlirezaSalehizadeh\Routail\Router;

$router = new Router();

$router->get('/users/{id}', 'UserController@show')->name('user_show');

$router->url('user_show', ['id' => '1']);

// output: /users/1
```

#### Route parameter types

[](#route-parameter-types)

Route parameters can have a type, which can be optional

```
any
id
int
string
uuid
slug
bool
date
int?  // optional
any?  // optional

```

Examples
--------

[](#examples)

```
use AlirezaSalehizadeh\Routail\Router;

$router = new Router();

$router->get('/users', 'UserController@index');

$router->any('/users', [UserController::class, 'index']);

// route pattern with parameter
$router->get('/users/{id}', 'UserController@show');

// route pattern with parameter and type
$router->get('/users/{id:int}', function($id){
  return "User id is $id";
});

// route pattern with optional parameter
$router->get('/users/{id:int?}', function($id = 1){
  return "User id is $id";
});

// set name for route
$router->get('/users/{id}', 'UserController@index')->name('user_index');

// set prefix for route
$router->get('/users/{id}', 'UserController@index')->prefix('/api/v1');

// set middleware for route
$router->get('/users/{id}', 'UserController@index')->middleware([FooMiddleware::class, BarMiddleware::class]);

// route group
$router->group(function($router){
  $router->get('/users', 'UserController@index');
  $router->get('/users/{id}', 'UserController@show');
}, [FooMiddleware::class, BarMiddleware::class], '/api/v1');
```

Contributing
------------

[](#contributing)

Please read the [CONTRIBUTING.md](CONTRIBUTING.md) file.

License
-------

[](#license)

[MIT](LICENSE.md).

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

925d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d2fea36dd7d7e08bb16f8800f37b9b56e69e0e5cc2749603c96efe6fb378cb1?d=identicon)[alirezasalehizadeh](/maintainers/alirezasalehizadeh)

---

Top Contributors

[![alirezasalehizadeh](https://avatars.githubusercontent.com/u/66994089?v=4)](https://github.com/alirezasalehizadeh "alirezasalehizadeh (5 commits)")

---

Tags

phprouterroute

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/alirezasalehizadeh-routail/health.svg)

```
[![Health](https://phpackages.com/badges/alirezasalehizadeh-routail/health.svg)](https://phpackages.com/packages/alirezasalehizadeh-routail)
```

###  Alternatives

[pecee/simple-router

Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.

696214.6k17](/packages/pecee-simple-router)[eftec/routeone

Router service class for PHP

291.4k2](/packages/eftec-routeone)[rosengate/exedra

Nestful route oriented PHP micro framework

142.0k1](/packages/rosengate-exedra)[developermarius/simple-router

Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.

112.4k](/packages/developermarius-simple-router)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
