2.5 KiB
2.5 KiB
Module Loader Documentation
Overview
ModuleLoader adalah sistem yang secara otomatis memuat route dari setiap modul di app/Modules/*. Setiap modul dapat memiliki file Routes.php yang akan otomatis dimuat saat aplikasi di-boot.
Cara Kerja
- Automatic Discovery: ModuleLoader secara otomatis memindai semua direktori di
app/Modules/* - Route Loading: Jika sebuah modul memiliki file
Routes.php, file tersebut akan otomatis dimuat - Route Registration: Route yang didefinisikan di file
Routes.phpmodul akan terdaftar ke sistem routing CodeIgniter
Struktur Modul
Setiap modul harus mengikuti struktur berikut:
app/Modules/
└── {ModuleName}/
├── Routes.php # File route untuk modul ini (opsional)
├── Controllers/
├── Models/
├── Services/
└── Entities/
Cara Membuat Routes di Modul
Buat file Routes.php di root direktori modul Anda:
<?php
/**
* {ModuleName} Module Routes
*
* @var RouteCollection $routes
*/
// Contoh route dengan group
$routes->group('api/module-name', ['namespace' => 'App\Modules\{ModuleName}\Controllers'], function($routes) {
$routes->get('/', 'ControllerName::index');
$routes->post('/', 'ControllerName::create');
$routes->get('(:num)', 'ControllerName::show/$1');
$routes->put('(:num)', 'ControllerName::update/$1');
$routes->delete('(:num)', 'ControllerName::delete/$1');
});
// Atau route langsung
$routes->get('api/module-name/endpoint', 'App\Modules\{ModuleName}\Controllers\ControllerName::method');
Integrasi
ModuleLoader sudah terintegrasi di app/Config/Routes.php:
use Config\ModuleLoader;
$moduleLoader = new ModuleLoader();
$moduleLoader->loadModuleRoutes($routes);
Route dari modul akan dimuat sebelum route utama aplikasi, sehingga route utama dapat override route modul jika diperlukan.
API Methods
loadModuleRoutes(RouteCollection $routes): void
Memuat semua route dari modul yang memiliki file Routes.php.
getAvailableModules(): array
Mengembalikan array nama modul yang tersedia.
moduleExists(string $moduleName): bool
Memeriksa apakah modul dengan nama tertentu ada.
getModulePath(string $moduleName): ?string
Mengembalikan path lengkap ke modul, atau null jika tidak ditemukan.
Catatan
- File
Routes.phpdi modul harus menggunakan variabel$routesyang sudah tersedia - Route dari modul dimuat dalam urutan alfabetis berdasarkan nama modul
- Jika ada konflik route, route yang dimuat terakhir akan mengambil prioritas