pivotphp / core-routing
Modular, high-performance routing system for PivotPHP - Express.js-inspired API with PSR compliance
Installs: 27
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/pivotphp/core-routing
Requires
- php: ^8.1
- psr/cache: ^2.0|^3.0
- psr/container: ^1.1|^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.1|^2.0
- psr/http-server-middleware: ^1.0
- psr/simple-cache: ^2.0|^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.48
- phpstan/phpstan: ^1.10
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.5|^11.0
- squizlabs/php_codesniffer: ^3.7
README
Modular, high-performance routing system for PivotPHP with Express.js-inspired API and full PSR compliance.
Features
- Express.js-Inspired API: Familiar routing patterns (
get(),post(),put(),delete(), etc.) - High Performance: Multi-level caching, route indexing, and memory optimization
- PSR Compliant: Full PSR-7 (HTTP), PSR-15 (Middleware), PSR-6/PSR-16 (Cache) support
- Plugin System: Extensible architecture with built-in plugins
- File Caching: Persistent route compilation for faster startup
- Static File Serving: Express-style static file management
- Type Safety: Strict typing with PHPStan Level 9 compliance
- Modular: Use independently or integrate with PivotPHP Core
Installation
composer require pivotphp/core-routing
Quick Start
use PivotPHP\Routing\Router; // Create router instance $router = new Router(); // Define routes $router->get('/users', function($req, $res) { return $res->json(['users' => []]); }); $router->post('/users', [UserController::class, 'store']); // Route with parameters $router->get('/users/:id', function($req, $res) { $userId = $req->param('id'); return $res->json(['user' => ['id' => $userId]]); }); // Route groups with prefix and middleware $router->group('/api', function() use ($router) { $router->get('/status', function($req, $res) { return $res->json(['status' => 'ok']); }); }, $authMiddleware); // Match route $route = $router::identify($method, $path);
Advanced Features
Plugin System
use PivotPHP\Routing\Plugins\MetricsPlugin; $router->registerPlugin(new MetricsPlugin());
File Caching
use PivotPHP\Routing\Cache\FileCacheStrategy; $cache = new FileCacheStrategy('/path/to/cache'); $router->setCacheStrategy($cache); // Warm cache $router->warmCache();
Static Files
use PivotPHP\Routing\Static\StaticFileManager; $router->static('/public', __DIR__ . '/public');
Requirements
- PHP 8.1 or higher
- PSR-7 HTTP Message implementation
- PSR-15 HTTP Server Handler implementation
Testing
# Run all tests composer test # Run with coverage composer test:coverage # Static analysis composer phpstan # Code style check composer cs:check # Fix code style composer cs:fix # All quality checks composer quality:check
Performance
PivotPHP Core Routing is designed for high performance:
- Multi-level caching: Exact match, compiled routes, pattern cache
- Route indexing: O(1) group lookups, method-based indexing
- Memory management: Automatic garbage collection, usage tracking
- Static/Dynamic separation: Optimized matching strategies
Documentation
License
MIT License - see LICENSE file for details.
Community
Credits
Created by Carlos Fernandes and the PivotPHP community.
Inspired by Express.js routing and built with modern PHP best practices.