Panada Framework 1.0.0 Documentation

Module

Module adalah sebuah sub-aplikasi yang memiliki komponen lengkap seperti layaknya aplikasi utama yang terdiri dari Model, View, Controller dan Library. Yang membedakannya adalah sebuah module harus digabungkan ke dalam aplikasi utama dan tidak dapat berdiri sendiri.

Resource sebuah module bisa langsung diakses dari dalam controller utama. Module ini akan memberikan output resource melalui interface controller module. Resource sebuah module juga dimungkinkan untuk diakses melalui URL routing. Sebuah module juga dapat mengakses resource dari module lain.

Hierarki interaksi dari sebuah controller utama ke dalam controller module, ataupun dari sebuah controller module kepada controller module lainnya sering juga disebut Hierarchical Model View Controller (HMVC). Lebih jauh mengenai ini silahkan lihat Presentation Abstraction Control (PAC).

Konfigurasi Module

Konfigurasi module dilakukan di dalam file app/config/main.php.

Penjelasan:

Parameter Keterangan
path

Konfigurasi ini menentukan di mana lokasi folder module diletakan. Secara default, lokasi folder module ada di dalam folder panada.

Membuat Module

Buat sebuah folder dan beri nama sesuai dengan nama module yang ingin dibuat. Letakkan folder ini di dalam direktori Modules:

panada/Modules/NamaModule

Sebuah module setidaknya harus terdiri dari:

Namun demikian sebaiknya digunakan struktur secara lengkap seperti berikut ini:

Controller Module

Membuat sebuah controller di dalam module sama seperti membuat controller pada aplikasi utama. Yang membedakannya adalah penggunaan namespace yang dilengkapi nama module.

namespace Modules\NamaModule\Controllers;

Jika misalnya Anda memiliki module dengan nama User dan sebuah controller Home, maka nama namespace-nya adalah:

namespace Modules\User\Controllers;

Berikut adalah contoh kodenya:

Penggunaan namespace Modules\NamaModule\ juga berlaku untuk memanggil komponen library atau model yang ada di dalam module. Sebagaimana yang ada pada contoh di atas.

Contoh memanggil sebuah model:

$this->dummy = new Models\ModelDummy;

Contoh memanggil sebuah library:

$this->test = new Libraries\Test;

Untuk memanggil resource natif panada:

$this->request = new Resources\Request;

Dengan pola seperti ini, Anda juga bisa langsung memanggil library atau model yang ada pada module lain. Terlebih dahulu deklarasikan use dari module lain yang akan digunakan.

use Modules\ModuleLain;

Contoh memanggil sebuah model dari module lain:

$this->dummy2 = new ModuleLain\Models\Dummy;

Contoh memanggil sebuah library dari module lain:

$this->test2 = new ModuleLain\Libraries\Test;

Alias Method juga tetap bisa diimplementasikan pada controller yang berada di dalam module. Nama method alias yang ada di dalam controller module mengikuti nama yang didefenisikan pada konfigurasi aplikasi utama.

View Module

Pemanggilan file view di dalam controller module tidak ada perbedaan dengan pemanggilan view pada aplikasi utama.

Model Module

Sama seperti controller, pembuatan nama class untuk sebuah model di dalam module harus diawali dengen namespace Modules\NamaModule\Models kemudian diikuti dengan nama model.

Library Module

Demikian juga hal yang sama berlaku pada nama class untuk library. Namespace-nya adalah Modules\NamaModule\Libraries.

Penggunaan Module

Pemanggilan sebuah module bisa dilakukan dengan tiga cara yaitu melalui controller utama, controller module lain dan URL.

Controller Utama

Untuk memanggil sebuah module dari dalam controller aplikasi utama, caranya adalah dengan menggunakan:

use Modules\NamaModule;

Misalnya module User ingin dipanggil dari controller utama Home seperti contoh berikut:

Controller Module

Cara yang sama jika kita ingin memanggil sebuah module dari dalam controller module lain.

URL

Berikut adalah segment pemanggilan module di dalam URL:

http://website.com/index.php/NamaModule/NamaController/namaMethod/argument

Atau jika mod_rewrite telah diaktifkan (dengan setting .htaccess file yang benar):

http://website.com/NamaModule/NamaController/namaMethod/argument

Sebagai contoh jika ingin mengakses module User dengan controller Home dan method index, maka URL-nya adalah:

http://website.com/User

Diskusi