2.4 KiB
2.4 KiB
Panduan Menambah Module Baru
📦 Struktur Module
Setiap module baru mengikuti pola yang sama:
src/Modules/ModuleBaru/
├── ModuleBaruRoutes.php # Register routes
├── Controller.php # Request handler
└── Service.php # Business logic
🚀 Langkah Menambah Module
1. Buat Struktur Folder
mkdir -p src/Modules/ModuleBaru
2. Buat Routes File
src/Modules/ModuleBaru/ModuleBaruRoutes.php:
<?php
declare(strict_types=1);
namespace App\Modules\ModuleBaru;
use Slim\App;
class ModuleBaruRoutes
{
public static function register(App $app): void
{
$app->group('/modulebaru', function ($group) {
$group->group('/v1', function ($v1Group) {
// Routes di sini
$v1Group->get('/endpoint', [Controller::class, 'method']);
});
});
}
}
3. Register di public/index.php
Tambahkan di bagian "Register module routes":
use App\Modules\ModuleBaru\ModuleBaruRoutes;
// ...
// Register module routes
HealthRoutes::register($app);
AuthRoutes::register($app);
RetribusiRoutes::register($app);
ModuleBaruRoutes::register($app); // <-- Tambahkan di sini
4. Update OpenAPI Spec (Opsional)
Edit public/docs/openapi.json dan tambahkan endpoint baru di paths.
✅ Contoh: Module "Parkir"
// src/Modules/Parkir/ParkirRoutes.php
namespace App\Modules\Parkir;
use App\Middleware\JwtMiddleware;
use Slim\App;
class ParkirRoutes
{
public static function register(App $app): void
{
$jwtMiddleware = new JwtMiddleware();
$app->group('/parkir', function ($group) use ($jwtMiddleware) {
$group->group('/v1', function ($v1Group) use ($jwtMiddleware) {
$v1Group->get('/zones', [ParkirController::class, 'getZones'])
->add($jwtMiddleware);
});
});
}
}
🔄 Best Practices
- Isolasi: Setiap module independen
- Naming: Gunakan namespace yang jelas
- Routes: Group by module name
- Versioning: Gunakan
/v1untuk future compatibility - Middleware: Apply di level group atau route
📝 Checklist Module Baru
- Buat folder
src/Modules/ModuleName/ - Buat
ModuleNameRoutes.phpdengan methodregister() - Buat Controller & Service (jika perlu)
- Register di
public/index.php - Test routes
- Update OpenAPI spec (opsional)
- Commit & push