Home » » Apa itu Framework ?

Apa itu Framework ?



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?
Diberdayakan oleh Blogger.