Events & injection
Setelah Models (useModels) dan Storages (NexaModel + Storage()), lanjut ke injection antar controller, domain events, dan middleware.
refParams
· useParams
· useModels
· NexaEvent
Storages → useModels() → refParams / useParams → NexaEvent
Alur baca backend
Dashboard → Events & injection (halaman ini) → Models.
Dari Storages ke topik ini
Di Storages, data diakses lewat model dan useModels('Model', 'method', [args]). Halaman ini menjelaskan cara yang sama untuk orkestrasi lebih luas: memanggil controller lain (refParams, useParams), lalu memisahkan efek samping dengan event dan melindungi rute dengan middleware.
Controller & model injection
Mendapatkan instance controller lain atau memanggil method di model/controller tanpa menyusun dependensi secara manual di setiap kelas.
refParams() — referensi controller (Admin)
Mengambil instance controller di namespace App\Controllers\Admin:
$orderController = $this->refParams('Product/Order');
$keranjang = $this->refParams('Product/Order')->cart();
$DriveManager = $this->refParams()->Manager()->Drive();Path Product/Order mengarah ke kelas seperti Controllers\Frontend\Product\Order.
useModels() — panggilan method model
Sama seperti di Models: useModels('ModelPath', 'methodName', [$args]) memanggil Model::methodName(...$params) pada App\Models (termasuk subfolder, mis. 'Role/Package').
useParams() — panggilan method controller lain
Memanggil method pada controller Admin lain dan mengembalikan hasilnya:
$data = $this->useParams('Access/General', 'data', [$params]);
$this->useParams('Access/General', 'sendOrder', [$params, $label, $this->getPost()]);| Method | Fungsi | Namespace |
|---|---|---|
refParams('Path') |
Instance controller lain | App\Controllers\Admin |
useModels('Model', 'method', [$args]) |
Panggil method model | App\Models |
useParams('Path', 'method', [$args]) |
Panggil method controller lain | App\Controllers\Admin |
Events & listeners
Domain events untuk decoupling: dispatch event, lalu listener menjalankan logika terkait.
system/Events/NexaDomainEvent.phpsystem/Events/NexaEventDispatcher.phpsystem/Events/Listeners/NexaUserEventListeners.phpsystem/Helpers/NexaEvent.php
Middleware (route)
File: system/NexaMiddleware.php. Middleware dapat didaftarkan ke nama (mis. auth) lalu dilampirkan ke route:
$router->middleware('auth', function() {
// … cek sesi, redirect jika perlu …
return true;
});
$router->add('/dashboard', 'AdminController@index', ['auth']);