attr-route/laravel-attribute-route

Enterprise-grade Laravel routing via PHP Attributes

Maintainers

Package info

github.com/SulmaneDev/laravel-attribute-route

pkg:composer/attr-route/laravel-attribute-route

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.0 2026-03-06 04:12 UTC

This package is auto-updated.

Last update: 2026-05-06 04:42:57 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Created with love and with other contributors.

Laravel Attribute Routing is an enterprise-grade package that revolutionizes how you define routes in Laravel. Using PHP 8 Attributes, you can keep your routing logic close to your controllers, maintaining military-grade security and optimized performance.

๐Ÿš€ Key Features

  • Intuitive Attributes: Define routes directly as "decorators" on your controller methods.
  • Controller-Level Groups: Define shared prefixes, middleware, and names at the class level.
  • Advanced Throttling: Support for tiered, repeatable #[RateLimit] attributes.
  • Unified Validation: Inline #[Validate] attribute for automated request validation.
  • Role/Policy Security: Seamless integration with Laravel Gates and Policies via #[Authorize].
  • High Performance: Optimized RouteTree matching and production-ready RouteCache.
  • Military-Grade Security: Namespace whitelisting and path injection prevention out of the box.

๐Ÿ“ฆ Installation

Install the package via composer:

composer require attr-route/laravel-attribute-route

Publish the config file:

php artisan vendor:publish --provider="AttrRoute\AttributeRoute\AttributeRouteServiceProvider" --tag="config"

Smart Route Inference

The package automatically infers missing route properties from your controller methods, reducing boilerplate:

#[Route(method: 'GET')]
public function showProfile() { ... }
// Result: URI = /show-profile, Name = show-profile
  • Paths: CamelCase methods are automatically converted to kebab-case URIs.
  • Names: Route names are inferred from the method name if not explicitly provided.

Attribute "Decorators"

Using the built-in RouteAttributeMiddleware, attributes like #[Validate] and #[Authorize] behave like decorators, executing logic before your controller method:

#[Route(method: 'POST', path: '/users')]
#[Validate(rules: ['email' => 'required|email'])]
public function store(Request $request) { ... }

๐Ÿงช Enterprise Testing

The package includes a comprehensive suite of tests:

  • Unit Tests: Isolated testing for core services.
  • Feature Tests: Full integration testing via Orchestra Testbench.

Run tests using PHPUnit:

vendor/bin/phpunit

โš™๏ธ Configuration

The config/route-attributes.php file allows you to customize:

  • scan_paths: Which directories should be scanned for attributes.
  • allowed_namespaces: Whitelist of namespaces for secure discovery.
  • cache: Enable/disable production route caching.

๐Ÿ›ก๏ธ Security

This package enforces strict security policies by default:

  • Namespace Whitelisting: Only controllers in allowed namespaces are scanned.
  • Injection Blocking: Route paths are validated against malicious character patterns.
  • State-Change Protection: Automated checks for state-changing HTTP methods.

๐Ÿš€ Performance

  • Lazy Loading: Attributes are parsed via Reflection without instantiating controllers.
  • Optimized Matching: Uses a segment-based tree for fast route lookups.
  • Route Caching: Supports serialized route maps for zero-latency production boots.

๐Ÿค Contributing

Please see CONTRIBUTING for details.

๐Ÿ“„ License

The MIT License (MIT). Please see License File for more information.