poshtive / router
Convention-based route discovery for Laravel controllers using PHP attributes.
Requires
- php: ^8.3
- illuminate/contracts: ^13.0
- illuminate/pipeline: ^13.0
- illuminate/routing: ^13.0
- illuminate/support: ^13.0
- symfony/finder: ^7.4
Requires (Dev)
- laravel/pint: ^1.29
- mockery/mockery: ^1.6
- orchestra/testbench: ^11.1
- phpunit/phpunit: ^11.5.50
README
Convention-based route discovery for Laravel controllers, with PHP attributes for overrides and metadata.
Status
laravel-router is stable.
- PHP:
^8.3 - Laravel components:
^13.0 - Test coverage: PHPUnit 11 + Orchestra Testbench 11, with
src/at 100% locally
Highlights
- Public-method route discovery with minimal registration boilerplate
- Support for nested controller resources and model-bound parameters
- Convention-based HTTP verb resolution with optional explicit overrides
- Middleware,
whereconstraints, and inheritance-aware discovery - Strict duplicate detection and optional skipped-route reporting
Installation
Install the package with Composer:
composer require poshtive/router
Optionally publish the configuration file:
php artisan vendor:publish --provider="Poshtive\Router\RouterServiceProvider" --tag="config"
Quick Start
Configure route discovery in config/router.php:
'groups' => [ 'web' => [ 'paths' => [app_path('Http/Controllers')], 'middleware' => ['web'], ], ],
Then add a controller method:
namespace App\Http\Controllers; class UserController { public function index() {} }
This registers GET /user automatically after the service provider boots.
You can still define Laravel routes manually as usual.
Documentation
Testing
Run the package test suite with:
composer test
Generate a Clover coverage report for src/ with:
composer test:coverage
Changelog
Release notes are tracked in CHANGELOG.md.
Contributing
Contributions are welcome. Please feel free to submit issues or pull requests.
License
This package is open-sourced software licensed under the MIT license.