Buat para programmer atau para interest IT, pasti sudah kenal kan
yang namanya Framework??. Pasti jawabannya “tentu sudah kenal “. Tapi
buat yang belom tahu tentang Framework, kira-kira pengertiannya dalam
dunia IT begini:
Framework adalah sekumpulan perintah/fungsi dasar yang dapat membantu dalam menyelesaikan proses-proses yang lebih kompleks
Pengenalan
Mengapa harus Framework ? Sebenarnya bukan keharusan untuk menggunakan
framework. Namun, seperti pengertian diatas, framework dapat membantu
anda dalam menyelesaikan pekerjaan yang lebih kompleks.
Pada tutorial kali ini, saya akan membahas tentang CodeIgniter (CI),
sebuah PHP Framework yang saya nilai lebih mudah digunakan ketimbang
CakePHP atau Zend Framework. Struktur CI lebih banyak meniru Ruby on
Rail (RoR), sebuah framework pembuatan aplikasi web dengan menggunakan
bahasa pemrograman Ruby. Selain itu, dokumentasinya lebih lengkap dan
tentunya mudah dipahami.
Secara umum, framework menggunakan struktur MVC (Model, View, Controller). Jika saya gambar kan, kira-kira seperti ini :
Input > Processing > Output = Controller > Model > View
Model
Model mencakup semua proses yang terkait dengan pemanggilan struktur
data baik berupa pemanggilan fungsi, input processing atau mencetak
output ke dalam browser
Controller
Controller mencakup semua proses yang terkait dengan pemanggilan
database dan kapsulisasi proses-proses utama. Jadi semisal di bagian ini
ada file bernama member.php, maka semua proses yang terkait dengan
member akan dikapsulisasi/dikelompokan dalam file ini.
View
View mencakup semua proses yang terkait layout output. Bisa dibilang untuk menaruh template interface website atau aplikasi.
More Powerable
Nah, kelebihan lain dari CI adalah Search Engine dan Human Friendly
URL….apalagi nih ? CI menggunakan struktur pemanggilan eksekusi seperti
ini :
www.your-site.com/news/article/345.
Jadi maksudnya, ketika sebuah Search Engine mencari kata yang terkait ke
sebuah situs, maka kata kunci tersebut bisa saja didapatkan dalam
pemanggilan alamat situs tersebut.
Nah, sebelum memulai, ada baiknya anda mendowload file CI terlebih
dahulu. Pastikan juga komputer anda telah terinstall Apache, PHP, dan
MySQL. Lebih mudah jika anda menggunakan XAmpp atau paketan web server
jenis lainnya.
Setelah CI di download, taruh dalam htdocs. Jika anda menginstall XAmpp
di folder C:/ Program Files maka alamatnya adalah C:/Program
Files/xampp/htdocs/
Important
Nah, yang perlu anda perhatikan 3 folder penting :
/system/application/model
/system/application/controller
/system/application/view
Jadi, semua file yang terkait dengan website atau aplikasi anda,
masing-masing harus ditaruh di ketiga folder ini sesuai dengan fungsinya
masing-masing.
Aturan Penulisan Fungsi
Karena CI menggunakan Object Oriented Programming (OOP), maka yang perlu
diingat bahwa penulisan nama class utama harus menggunakan huruf besar
di awal dan disimpan dengan nama yang sama ,tetapi menggunakan huruf
kecil semua.
Sebagai contoh, silahkan buka file /system/application/controllers/welcome.php
Quote
Code: [Select]
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
}
function index()
{
$this->load->view(’welcome_message’);
}
}
Aturan ini berlaku untuk semua file yang terkait dengan class fungsi.
Sedangkan jika didalamnya terdapat fungsi-fungsi lain, boleh
menggunakan huruf kecil saja atau huruf besar. Tetapi perlu diingat
bahwa PHP sangat Case Sensitive, jadi berhati-hatilah dalam menggunakan
nama fungsi.
Konfigurasi
Selanjutnya, dalam folder /system/application/config/ ada beberapa file
yang perlu anda ubah supaya CI bisa berjalan dengan baik.
config.php
Isi alamat pemanggilan di browser. Dalam contoh ini alamatnya adalah http://www.ms-room.com/go/mirror/ePaKeT/retingiedoc/tsohlacol
Quote
Code: [Select]
$config[’base_url’] = “http://www.ms-room.com/go/mirror/ePaKeT/retingiedoc/tsohlacol”;
database.php
Isi hostname, username, password dan nama database yang digunakan.
autoload.php
File ini berfungsi untuk memanggil secara otomatis fungsi-fungsi yang
sudah disediakan CI atau yang anda buat tanpa harus memanggillnya dalam
aplikasi anda. Dalam kasus ini, kita akan memanggil fungsi database
secara otomatis sehingga setiap fungsi lain yang menbutuhkan fungsi
database cukup dengan menggunakan perintah $this->db
Kira-kira seperti ini isinya :
Quote
Code: [Select]
$autoload[’libraries’] = array(’database’);
routes.php
Variabel ini digunakan untuk menentukan nama file utama yang digunakan
sebagai ekeskutor utama website atau aplikasi. Contoh secara defaultnya
adalah file welcome.
Quote
Code: [Select]
$route[’default_controller’] = “welcome”;
Silahkan buka folder /system/application/controllers/, pasti anda
menemukan file yang bernama welcome.php. File ini yang disebut sebagai
eksekutor utama dari proses secara keseluruhan. Bisa dibilang ‘index’
nyalah.
Execute
Oke…sekarang coba panggil melalui browser anda dengan alamat http://www.ms-room.com/go/mirror/ePaKeT/retingiedoc/tsohlacol/ (Codeigniter hanya sebagai contoh. Anda bisa merubah dengan nama yang anda inginkan)
Mengapa kita butuh framework?
Bagi anda yang belum familiar dengan framework, framework adalah
sekumpulan fungsi, class, dan aturan-aturan. Berbeda dengan library yang
sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh
mengatur bagaimana kita membangun aplikasi.
Framework memungkinkan kita membangun aplikasi dengan lebih cepat
karena sebagai developer kita akan lebih memfokuskan pada pokok
permasalahan sedangkan hal-hal penunjang lainnya seperti koneksi
database, form validation, GUI, dan security; umumnya telah disediakan
oleh framework. Disamping itu dengan aturan-aturan yang jelas dan harus
dipatuhi, aplikasi kita lebih solid, more readable, dan kolabarasi dalam
tim dapat lebih mudah dilaksanakan.
Kita sebagai seorang software developer bisa dianalogikan sebagai
seorang tukang bangunan. Apabila anda perhatikan, seorang tukang
bangunan bisa membuat sebuah rumah. Tidak akan menjadi masalah bila
hanya untuk membangun rumah dengan satu atau dua lantai. Tetapi akan
menjadi masalah apabila dia mendapatkan pekerjaan untuk membangun sebuah
gedung bertingkat. Permasalahan akan menjadi semakin komplek, makin
banyak pekerja dan material yang dilibatkan, belum lagi dengan jadwal
yang ketat. Kita pun seperti itu. Membangun aplikasi kecil tentu tidak
menjadi masalah. Namun bagaimana bagaimana apabila aplikasi kecil kita
tersebut dengan makin lama makin bertambah requirementnya sejalan dengan
kebutuhan user. Di sini lah peran penting sebuah framework dalam
membangun aplikasi.
Framework yang ideal menurut saya
Sejak fenomena Ruby on Rails, sebuah framework untuk bahasa Ruby, yang
mana mampu memberi kemudahan yang luar biasa bagi developer dalam
membangun aplikasi web; tumbuh menjamur framework-framework sejenis yang
mengadopsi kemampuan Ruby on Rails untuk bahasa lainnya. Untuk PHP
sendiri, terdapat PHP on Track, Symfony, PHPCake, CodeIgniter, dan masih
banyak lainnya.
Saya telah mencoba Symfony, PHPCake, dan CodeIgniter. Symfony memiliki
fasilitas paling lengkap, terdapat command line interface untuk
membangun Object Relational Model (ORM), yang menterjemahkan relational
database menjadi kode program; dukungan AJAX; scaffolding, yaitu membuat
mekanisme CRUD (create, retrieve, update, and delete). Namun sayangnya
Symfony hanya berjalan di PHP5. Sebenarnya tidak menjadi masalah, karena
saat ini telah banyak web hosting yang menyediakan PHP5. Apa yang saya
rasakan adalah, bahwa Symfony adalah framework yang sangat solid. Saya
sangat menyukai fasilitas ORMnya, scaffolding yang kompleks, dan
tutorial dan dokumentasi yang sangat bagus dan komplit. Bagaimana tidak
bagus, selain disediakan User Guide yang berisi referensi API, juga
disediakan sebuah buku berisi study case pembuatan aplikasi ASKEET mulai
dari desain awal sampai selesai pengkodean. Di samping itu terdapat
juga tutorial yang berupa file movie, namun karena berukuran yang cukup
besar, saya enggan mendownloadnya, saya merasa sudah cukup dengan manual
berbentuk pdf. Secara kontras, saya juga merasakan bahwa Symfony adalah
seperti senjata kelas berat. Untuk mengoperasikannya butuh learning
curve yang cukup lama. Saya juga merasakan kekuatan yang out of control,
dimana ketika terjadi saya menginginkan sebuah perubahan yang agak
berbeda dari tutorial yang diberikan, saya seperti tidak tahu harus
kemana dan bagaimana. Saya mencoba bertahan selama 3 hari dengan
berusaha membuat aplikasi sederhana, namun pada akhirnya saya putuskan
untuk berhenti.
Berikutnya adalah CakePHP, framework ini juga memiliki ORM dan
scaffolding seperti halnya Symfony. Terdapat juga command line
interface, yang disebut sebagai baker, namun sifatnya tidak mutlak
digunakan. Secara keseluruhan CakePHP memiliki kemampuan tidak jauh dari
Symfony, namun sekilas lebih sederhana dan ukurannya lebih kecil, dan
yang tidak kalah menarik adalah kompatibilitasnya dengan PHP4. Namun
sayang, dokumentasi kurang lengkap, sehingga saya kesulitan mencari
informasi lebih dalam. Untung lah CakePHP membuka channel IRC sehingga
kita bisa berkonsultasi langsung dengan para pakarnya. Saya sudah
mencoba menanyakan permasalahan di channel IRC yang disediakan. Saya
mendapatkan respon yang memuaskan dari pakarnya (developer CakePHP)
sehingga permasalahn saya saat itu dapat diatasi. Namun di kesempatan
lain, saya tidak mendapat respon sama sekali, saya mencari orang yang
telah membantu saya sebelumnya, tetapi sepertinya dia tidak online. Saya
merasa CakePHP tidak bisa memberikan apa yang saya inginkan, meski pun
saya telah mencoba tutorial dan membaca panduan lainnya, saya tetap
tidak besa melakukan apa-apa yang saya inginkan, atau bisa dibilang saya
kebingungan, seperti halnya pada saat mencoba Symfony.
CodeIgniter, framework ini sebelumnya tidak masuk daftar yang akan
saya coba. Hal ini dikarenakan oleh fiturnya yang jauh lebih sedikit
dibandingkan Symfony dan CakePHP. Tidak ada ORM, scaffolding sangat
sederhana, tidak ada AJAX, tidak ada user authentication. Lalu apa yang
saya bisa harapkan darinya? Bermula dari membaca berbagai review php
framework di blog lain, mereka mengatakan bahwa CodeIgniter memiliki
kinerja yang lebih bagus daripada Symfony maupun CakePHP, dikarenakan
oleh library yang di-load oleh framework lebih sedikit. Setelah saya
mencobanya, memang framework ini terasa beda. Terasa lebih ringan dan
lebih bebas. Meskipun CodeIgniter juga menggunakan design pattern MVC,
namun tidak lah mutlak untuk menggunakan M (model). Jadi saya bisa
dengan bebas menggunakan style yang saya sukai. Sajian dokumentasinya
cukup lengkap, meskipun tidak selengkap Symfony, namun sangat memadai.
Saya bisa melakukan ini itu setelah saya membaca panduan di online
manual. Sangat menyenangkan, dimana Symfony dan CakePHP tidak bisa
memberikannya untuk saya. Meskipun memiliki kemampuan yang dibawah
framework lainnya, namun CodeIgniter sangat mudah untuk dipelajari.
Mungkin ini lah yang dimaksud dengan framework lightweight. Mudah dan
sangat ringan, namun tidak memiliki fasilitas sebanyak framework
lainnya. Ketika saya amati forum dan halaman wiki, komunitas CodeIgniter
memberikan solusi untuk permasalahan seperti User Authentication dan
Ajax. Sepertinya memang pembuat CodeIgniter sengaja memberikan kebebasan
kepada usernya untuk mengembangkan sendiri sesuai dengan kebutuhan
masing-masing yang berbeda, sedangkan CodeIgniter bertanggungjawab
terhadap tugas-tugas lain yang lebih utama.
Bagi saya CodeIgniter menarik, mudah dipelajari, dan sangat solid untuk
membangun aplikasi yang besar. Peraturan-peraturan dan library yang
disediakannya tidak membatasi saya untuk tetap menggunkan style
pemrograman yang saya sukai. Ini adalah point penting. Siapa mengatur
siapa, programer mengatur program atau program mengatur programer?
Baiklah, sepertinya tutorial ini cukup sekian dulu. Selamat Mencoba CodeIgniter “
sumber