init backend presensi
This commit is contained in:
84
app/Config/ModuleLoader.md
Normal file
84
app/Config/ModuleLoader.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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
|
||||
|
||||
1. **Automatic Discovery**: ModuleLoader secara otomatis memindai semua direktori di `app/Modules/*`
|
||||
2. **Route Loading**: Jika sebuah modul memiliki file `Routes.php`, file tersebut akan otomatis dimuat
|
||||
3. **Route Registration**: Route yang didefinisikan di file `Routes.php` modul 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
|
||||
<?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`:
|
||||
|
||||
```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.php` di modul harus menggunakan variabel `$routes` yang sudah tersedia
|
||||
- Route dari modul dimuat dalam urutan alfabetis berdasarkan nama modul
|
||||
- Jika ada konflik route, route yang dimuat terakhir akan mengambil prioritas
|
||||
Reference in New Issue
Block a user