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
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.
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.
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.
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
Important
Nah, yang perlu anda perhatikan 3 folder penting :
/system/application/model
/system/application/controller
/system/application/view
/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
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 Welcome()
{
parent::Controller();
}
function index()
{
$this->load->view(’welcome_message’);
}
}
{
$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
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”;
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.
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’);
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”;
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
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
REVIEW
Jika berhasil, akan tampil gambar seperti ini :
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.
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.
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 


 
terimah kasih atas informasinya ,sangat berguna :D