Multiple Application pada Fusebox 5


Fusebox 5 mempunyai fasilitas untuk membuat beberapa aplikasi fusebox dalam satu aplikasi php. Apa yang menjadikan ini menarik? karena dengan fasilitas ini kita dapat memecah aplikasi yang kompleks menjadi satuan-satuan yang lebih kecil sehingga lebih mudah dikelola.

Anggaplah Anda membuat suatu aplikasi rumah sakit, dalam sistem rumah sakit mungkin terdapat beberapa sub aplikasi seperti registrasi, rekam medis, apotik, laboratorium dan lain-lain. Dengan menggunakan fasilitas multiple application kita dapat membuat kanal(channel) sendiri untuk setiap sub aplikasi tersebut.

Untuk membuat lebih mudah dimengerti, intinya adalah kita membuat beberapa aplikasi fusebox pada satu aplikasi php. Jadi dalam satu virtual directory terdapat beberapa aplikasi fusebox.

Setiap membuat aplikasi fusebox, saya selalu menentukan struktur direktori terlebih dahulu. Misal dalam aplikasi rumah sakit kita menentukan struktur direktori sebagai berikut:

hospital/
-------/index.php
-------/registrasi.php
-------/rm.php
-------/apotik.php
-------/kasir.php
-------/modules/
---------------/index/
---------------------/circuits/
---------------------/parsed/
---------------------/fusebox.xml.php
---------------/registrasi/
------------------------/circuits/
------------------------/parsed/
------------------------/fusebox.xml.php
---------------/rm/
------------------/circuits/
------------------/parsed/
------------------/fusebox.xml.php
---------------/apotik/
---------------------/circuits/
---------------------/parsed/
---------------------/fusebox.xml.php
---------------/kasir/
--------------------/circuits/
--------------------/parsed/
--------------------/fusebox.xml.php
-------/apps/
------------/fusebox.core/
-------------------------/*.* (berisi file-file core fusebox)
------------/common/
--------------------/circuits/
----------------------------/* (berisi circuit-circuit umum, atau circuit bersama yang dapat diakses setiap kanal)

Dari contoh struktur direktori diatas, anggaplah root dari aplikasi diakses melalui http://localhost/hospital. Kemudian bisa kita lihat beberapa kanal dari aplikasi rumah sakit tersebut, dan detail aplikasinya ada pada direktori modules/.

Perhatikan bahwa dalam satu aplikasi php diatas, terdapat beberapa file fusebox.xml, inilah yang disebut dengan multiple application. Apa keuntungannya? tentu saja aplikasi menjadi lebih mudah dikelola, selain itu hasil file parsed pun bisa lebih kecil karena dibagi-bagi per sub aplikasi.

Dengan demikian kita perlu melakukan pemetaan agar aplikasi yang diakses menunjuk ke modul yang bersesuaian. Anggap index adalah kanal untuk aplikasi master data (dokter, poli, ruangan, dan lain-lain), jadi file index.php bisa berisi:


$FUSEBOX_APPLICATION_NAME = "Hospital";
$FUSEBOX_APPLICATION_PATH = "modules/index/";
$FUSEBOX_APPLICATION_KEY = "index";
@include($FUSEBOX_APPLICATION_PATH."parsed/app_".$FUSEBOX_APPLICATION_NAME.".php");
include("apps/fusebox.core/fusebox5.php");

Sehingga path aplikasi mengarah ke modules/index/ sedangkan key ($FUSEBOX_APPLICATION_KEY) kita beri nama “index”. Karena key bebeda-beda, maka untuk mengakses $self/$myself harus dapat dinamis. Untuk membuat $self/$myself dinamis kita perlu membuat kode sebagai berikut:


$self = $_fba->appKey.".php";
$myself = $self."?".$_fba->fuseactionVariable."=";

$_fba adalah objek bawaan fusebox, appKey adalah properti key yang sedang aktif, dalam hal ini $_fba->appKey akan berisi “index”. Sehingga variabel $self berisi “index.php”, dan $myself berisi “index.php?fuseaction=”.

Untuk membuat kanal yang lain pun sama, kita hanya perlu mengubah application path dan application key saja, dan untuk mengaksesnya sesuaikan dengan nama filenya, misal http://localhost/hospital/registrasi.php untuk kanal registrasi.

Kode untuk variabel $self dan $myself sebaiknya berada pada circuit bersama, misal kita membuat circuit global dan setting $self dan $myself berada pada fuseaction settings, sehingga setiap fusebox.xml dalam suatu kanal dapat mengakses fuseaction global.settings pada <preprocess> nya.

Happy fuseboxing :)

  1. No comments yet.
(will not be published)

  1. No trackbacks yet.