r2-packages / framework
A simple reusable PHP package
Requires
- php: >=7.4
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v1.2.01
- v1.2.00
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.09
- v1.1.08
- v1.1.07
- v1.1.06
- v1.1.05
- v1.1.04
- v1.1.03
- v1.1.02
- v1.1.01
- v1.1.00
- v1.0.99
- v1.0.98
- v1.0.97
- v1.0.96
- v1.0.95
- v1.0.94
- v1.0.93
- v1.0.92
- v1.0.91
- v1.0.90
- v1.0.89
- v1.0.88
- v1.0.87
- v1.0.86
- v1.0.85
- v1.0.84
- v1.0.83
- v1.0.82
- v1.0.81
- v1.0.80
- v1.0.79
- v1.0.78
- v1.0.77
- v1.0.76
- v1.0.75
- v1.0.74
- v1.0.73
- v1.0.72
- v1.0.71
- v1.0.70
- v1.0.69
- v1.0.68
- v1.0.67
- v1.0.66
- v1.0.65
- v1.0.64
- v1.0.63
- v1.0.62
- v1.0.61
- v1.0.60
- v1.0.59
- v1.0.58
- v1.0.57
- v1.0.56
- v1.0.55
- v1.0.54
- v1.0.53
- v1.0.52
- v1.0.51
- v1.0.50
- v1.0.49
- v1.0.48
- v1.0.47
- v1.0.46
- v1.0.45
- v1.0.44
- v1.0.43
- v1.0.42
- v1.0.41
- v1.0.40
- v1.0.39
- v1.0.38
- v1.0.37
- v1.0.36
- v1.0.35
- v1.0.34
- v1.0.33
- v1.0.32
- v1.0.31
- v1.0.30
- v1.0.29
- v1.0.28
- v1.0.27
- v1.0.26
- v1.0.25
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
This package is auto-updated.
Last update: 2026-09-12 23:59:29 UTC
README
A small reusable PHP routing framework package.
Requirements
- PHP 7.4 or higher
- Composer
Installation
Install the package with Composer:
composer require r2-packages/framework
If you are using this package locally, require Composer's autoloader:
require __DIR__ . '/vendor/autoload.php';
Basic Usage
Create a router, register routes, and run the router with the current request path and method.
use R2Packages\Framework\Route; $route = new Route(); $route->get('/', function ($request) { echo 'Welcome'; }); $route->get('/users/{id}', function ($request) { echo 'User ID: ' . $request['id']; }); $route->post('/users', [UserController::class, 'store']); $route->delete('/users/{id}', [UserController::class, 'delete']); $route->run($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
Controller Routes
Controller routes should be registered as an array containing the class name and method name.
$route->get('/users/{id}', [UserController::class, 'show']);
The controller is instantiated with the request array, and the matched method receives the request array.
class UserController { private $request; public function __construct($request) { $this->request = $request; } public function show($request) { echo 'User ID: ' . $request['id']; } }
Route Prefixes
Use prefix() to group routes under a shared path.
$route->prefix('api', function ($route) { $route->get('/users', [UserController::class, 'index']); $route->get('/users/{id}', [UserController::class, 'show']); });
The example above registers:
api/usersapi/users/{id}
Middleware
Use globalMiddleware() to apply middleware classes to a group of routes.
$route->globalMiddleware([AuthMiddleware::class], function ($route) { $route->get('/dashboard', [DashboardController::class, 'index']); });
Middleware classes must provide a handle() method.
class AuthMiddleware { public function handle($request) { if (empty($request['Authorization'])) { R2Packages\Framework\Utils::jsonResponse([ 'success' => false, 'message' => 'Unauthorized', ], 401); } } }
Named Routes
Use name() to assign a name to the most recently registered route, then generate the route path with getRouteByName().
$route->get('/users/{id}', [UserController::class, 'show'])->name('users.show'); $path = $route->getRouteByName('users.show', [ 'id' => 10, ]); echo $path; // users/10
Helpers
The Utils class provides helper methods for common responses and formatting.
use R2Packages\Framework\Utils; Utils::jsonResponse([ 'success' => true, 'message' => 'Created successfully', ]); Utils::dd($data); $snakeCase = Utils::camelCaseToSnakeCase('createdAt');
License
MIT