2012-12-14

CI : Kenapa Akses Controler lain tidak diwajibkan

suatu masalah terjadi karena ada alasannya. Alasan kenapa ada controler di akses via controler lain juga ada alasannya. Kalau dari saya alasannya adalah karena penamaan, sebagai referensi saya memakai domain abc.efg! harap di ingat domain ini tidak nyata dan tidak ada!

Permintaan client mengharuskan saya membuat guest book dengan link abc.efg/guestbook padahal saya sudah membuat abc.efg/page/guestbook. Tentu saja isi dari guestbook (di contrler page) harus di copy paste ke controler guestbook (function index). Hal yang menyulitkan adalah akan terjadi pemborosan kedepannya bila disuruh edit guestbook. Kalau dari saya lebih baik buka 1 file (page) dan edit di function guestbook.



Keinginan saya adalah di controler guestbook, saya cukup mengetikkan perintah yang menjalankan fungsi guestbook. atau mudahnya
$this->controler_page->function();
tetapi ternyata cara ini tidak diwajibkan. dari forum yang kubaca menolak cara ini? TETAPI kenapa dilarang??
Ternyata cara tersebut tidaklah sesuai dengan model CI seharusnya, seharusnya konsepnya adalah controler --> model -> view. dengan memanggil controler dari controler itu berarti saya mengacaukan struktur yang benar?!? Bahkan bisa dibilang cara terbaik adalah tetap memanfaatkan controler -> model lalu terakhir view.

Ternyata penolakan ini juga disambung adanya penjelasan cara yang terbaik. Cara terbaik dan tentu teraman (termasuk sesuai standar yang berlaku) adalah meletakkan apa saja yang akan digunakan di model, jadi bisa dibilang bila sebelumnya kita mengetik controler panjang-panjang !

Dimana kita deklarasi apa aja yang masuk ke variable di dalam controler (yang kurasa itu adalah normalnya), maka kita akan kirim data ke model lalu mendapat hasil berupa array yang nantinya array tersebut akan dipakai untuk ditampilkan di view.

pada versi fungsi CI yang kupakai biasa memakai model sebagai berikut

fungsi contoh()
{
/*
base
============
biasa kuletakkan perintah memanggil model, library yang mungkin tidak di sebut di autoload agar yakin
*/
$ar=$this->base();
$ar['contoh1']=$this->modelku->tes1();
$ar['contoh2']=$this->modelku->tes2();
$ar['contoh3']=$this->modelku->tes3();
$this->view->('tes_view',$ar);
}

Maka nantinya saya cukup membuat

fungsi contoh()
{
/*
base
============
biasa kuletakkan perintah memanggil model, library yang mungkin tidak di sebut di autoload agar yakin
*/
$ar=$this->base();
$ar $this->modelcontroler->contoh($ar);
$this->view->('tes_view',$ar);
}


Cukup sederhana?? walau sejujurnya coding controlernya akan banyak di model dan tentu saja controler tidak akan banyak-banyak. Cara ini cukup efektif untuk
  • mengurangi kapasitas controler yang biasanya besar. bila controler besar maka akan mudah data kita hilang?
  • klien mau agar link yang digunakan disesuaikan dgn keinginan mereka. misal guestbook jadi bukutamu. Kita sebenarnya agak repot karena harus bikin controler bukutamu (rename boleh tetapi tergantung keinginan) dan mengisi dengan fungsi, nama class yang sesuai. Tapi codingnya jadi pendek, apalagi kalau tiba-tiba klien ingin yang tadinya ada di home (controler) berpindah ke ina (bahasa yang digunakan)
  • menghindari kebingungan tentang fungsi controler, model dan view. Sejujurnya hal ini masih terjadi pada saya namun tetap diperbaiki agar tidak terjadi untuk hal-hal berikutnya.
Akhir kata, ini masalah gaya anda coding. Mungkin anda sudah punya coding yang lebih baik, tetapi jangan lepas dari pertanyaan.. apakah gaya anda bisa bertahan kedepannya?!? karena sejujurnya client bagi para programer sangat tidak manusiawi.. menyuruh kita bikin coding panjang tetapi dikira cuma copy paste tanpa banyak berfikir.

Tidak ada komentar: