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.
Download
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
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://localhost/codeigniter
$config[’base_url’] = “http://localhost/codeigniter”;
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 :
$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.
$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://localhost/codeigniter/ (Codeigniter hanya sebagai contoh. Anda bisa
merubah dengan nama yang anda inginkan)
Jika berhasil, akan tampil gambar seperti ini :
REVIEW
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