Sudah sekitar 2 minggu ini saya mencoba mempelajari/beradaptasi dengan kohana terbaru yaitu KO3 alias Kohana Versi 3. Disebut beradaptasi karena memang saya berusaha menyesuaikan perubahan di KO3 compared to versi 2.3. Walaupun adaptasinya tidak intens, namun sedikit banyak saya mencoba share lewat tulisan ini.
Posting kali ini akan membahas mengenai design pattern HMVC yang digunakan di KO3.
Kita sudah tahu bahwa KO2 menggunakan pola arsitektur MVC. Sementara KO3, pola yang digunakan adalah HMVC, yaitu Hierarchical-Model-View-Controller. Pola ini sebenarnya hampir sama dengan MVC, namun pada HMVC, setiap MVC bisa berkomunikasi dengan MVC lainnya sehingga membentuk sebuah hierarchi. Komunikasi diantara MVC ini dilakukan oleh controller.
Pada KO2, setelah meload controller utama, maka proses selesai dengan mendisplay hasil prosesnya. Di KO3, setelah meload controller utama, maka kita bisa membuat request dan meload controller lainnya yang masing-masing mempunyai Model dan View-nya sendiri. Hampir sama seperti ketika melakukan request dari client ke server (MVC), namun Hierarchi ini semuanya diproses di sisi server.
Dari penjelasan tersebut, dapat ditarik kesimpulan bahwa dalam MVC 1 request hanya memiliki 1 controller saja, sementara dengan HMVC ini maka bisa dikatakan 1 request bisa memiliki beberapa controller. Namun begitu tidak masalah jika di KO3 hanya menggunakan 1 MVC saja. Fungsi HMVC ini akan membuat aplikasi terasa lebih modular saja.
Oleh karena yang berperan adalah controller, maka KO3 menggunakan class Request sebagai wrapper untuk melakukan proses Request ke controller lain. Untuk membuat request ini, gunakan fungsi static factory.
Sebagai contoh, page welcome ingin menampilkan news, kotak register user dan archive artikel. Disini controller welcome akan melakukan request ke 3 controller.
$news = Request::factory(‘widget/loadnews’)->execute();
$register = Request::factory(‘user/register’)->execute();
$archive = Request::factory(‘archive’)->execute();
Ada 2 hal yang harus diperhatikan ketika melakukan request :
1. Untuk parameter uri, formatnya harus sama dengan format routing di bootstrap. Defaultnya (<controller>(/<action>(/<id>))). Jika tidak menuliskan action atau id, maka kohana akan mengeksekusi default action. Seperti contoh di atas, yang akan dijalankan dari controller archive adalah action_index().
2. Jangan lupa, gunakan methode execute() untuk mengeksekusi action controller, supaya bisa menerima return outputnya.
Setelah proses request selesai, maka selanjutnya adalah menampilkan outputnya yang akan dikembalikan ke pemanggilnya. Output ini disebut dengan response. Caranya yaitu dengan mengassign output ke variabel response yang terdapat pada object request controller.
$this->request->response = $news.$register.$archive;
Dengan cara seperti itu, untuk standardisasi sebaiknya hindari menggunakan echo(), dan gunakan methode response() setiap kali ingin mengembalikan output di setiap controller. Baik itu akan dikembalikan ke browser ataupun ke controller lain yang memanggilnya.
Seperti itulah kira-kira konsep HMVC yang diimplementasikan di kohana 3 sejauh yang saya pahami. Jika ada tambahan atau koreksi silahkan ditunggu commentnya.

nice share….. boleh ga copas gan??
Silahkan, jangan lupa sourcenya disebutin