1. Go to this page and download the library: Download power-modules/router library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
power-modules / router example snippets
use Modular\Framework\App\ModularAppBuilder;
use Modular\Router\RoutingModule;
use Modular\Router\RouterModule;
use Modular\Router\PowerModule\Setup\RoutingSetup;
$app = new ModularAppBuilder(__DIR__)
->withPowerSetup(...RoutingSetup::withDefaults())
->withModules(
RoutingModule::class, // Provides default synthetic responses, global decorators, and entrypoint middleware
RouterModule::class, // Provides routing infrastructure
\MyApp\User\UserModule::class, // Your modules with routes
\MyApp\Admin\AdminModule::class,
)
->build();
// Get the composed HTTP entrypoint and handle PSR-7 requests
$httpEntrypoint = $app->get(\Modular\Router\Contract\HttpEntrypointInterface::class);
$response = $httpEntrypoint->handle($serverRequest);
use Modular\Framework\PowerModule\Contract\PowerModule;
use Modular\Framework\Container\ConfigurableContainerInterface;
use Modular\Router\Contract\HasRoutes;
use Modular\Router\Route;
class UserModule implements PowerModule, HasRoutes
{
public function getRoutes(): array
{
return [
Route::get('/profile', ShowUserProfileHandler::class),
Route::put('/profile', UpdateUserProfileHandler::class),
Route::post('/avatar', UploadUserAvatarHandler::class)
->addMiddleware(AuthMiddleware::class),
];
}
public function register(ConfigurableContainerInterface $container): void
{
$container->set(UserController::class, UserController::class)
->addArguments([UserService::class, LoggerInterface::class]);
}
}
// Results in: /user/profile, /user/avatar
use Modular\Router\Contract\HasCustomRouteSlug;
class ApiV1Module implements PowerModule, HasRoutes, HasCustomRouteSlug
{
public function getRouteSlug(): string
{
return '/api/v1';
}
public function getRoutes(): array
{
return [
Route::get('/users', ListApiUsersHandler::class),
Route::post('/users', CreateApiUserHandler::class),
Route::get('/health', HealthCheckHandler::class),
];
}
}
// Results in: /api/v1/users, /api/v1/health
use Modular\Router\Contract\HasMiddleware;
class AdminModule implements PowerModule, HasRoutes, HasMiddleware
{
public function getMiddleware(): array
{
return [
AuthMiddleware::class, // All admin routes :get('/dashboard', AdminDashboardHandler::class),
Route::delete('/users/{id}', DeleteAdminUserHandler::class)
->addMiddleware(ConfirmationMiddleware::class), // Extra confirmation
];
}
}
// Middleware order: Auth → Admin → Audit → [Confirmation] → Controller
// HTTP method factories with intuitive API
Route::get('/users', ListUsersHandler::class);
Route::post('/users', CreateUserHandler::class);
Route::put('/users/{id}', UpdateUserHandler::class);
Route::delete('/users/{id}', DeleteUserHandler::class);
// Each route points to a RequestHandlerInterface implementation
Route::get('/health', HealthCheckHandler::class);
// Fluent middleware chaining
Route::post('/orders', CreateOrderHandler::class)
->addMiddleware(AuthMiddleware::class, ValidationMiddleware::class);
// 1. Global Decorator (applied to all routes)
$router->addResponseDecorator(fn(ResponseInterface $r) => $r->withHeader('X-Global', 'true'));
// 2. Module-Level Decorator (applied to all routes in a module)
class UserModule implements PowerModule, HasRoutes, HasResponseDecorators
{
public function getResponseDecorators(): array
{
return [fn(ResponseInterface $r) => $r->withHeader('X-Module', 'true')];
}
// ...
}
// 3. Route-Level Decorator (applied to a single route)
Route::get('/profile', UserController::class)
->addResponseDecorator(fn(ResponseInterface $r) => $r->withHeader('X-Route', 'true'));
use Modular\Framework\App\ModularAppBuilder;
use Modular\Router\PowerModule\Setup\RoutingSetup;
use Modular\Router\RoutingModule;
use Modular\Router\RouterModule;
$app = new ModularAppBuilder(__DIR__)
->withPowerSetup(...RoutingSetup::withDefaults())
->withModules(
RoutingModule::class,
RouterModule::class,
UserModule::class,
)
->build();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.