Saya pernah ditantang untuk membuat web dengan menggunakan PHP Frameworks, sementara itu saya belum penah mendengar kata Framework sebelumnya. Setelah nanya ke om google, jawabanya seperti ini:
Bisa dilihat dari namanya. Framework dapat diartikan sebagai sebuah kerangka kerja. Kerangka kerja dimana dapat memudahkan pekerjaan kita. Jika dikaitkan dengan PHP maka dapat diartikan sebagai suatu kerangka kerja yang telah terpola dan memudahkan pengembang web dalam pembuatan web yang menggunakan script PHP. Mempermudah yang dimaksud misalnya, Dalam membuat sebuah aplikasi web kita sering menulis script PHP secara keseluruhan (konvensional) dan itu pun kita ulang pada halaman yang lain. Bukankah itu begitu tidak efesien disamping berat ketika diload ? Dengan PHP Framework semua bisa teratasi. Semuanya sudah diatur menjadi pola-pola tertentu yang disebut dengan class. Pola/class inilah yang meringankan kita dalam penulisan script dan load halaman web.

PHP Framework berbeda jika dibandingkan dengan CMS (Content Management System), meski sama-sama meringankan dalam pembuatan web. Jika menggunakan CMS, kita tidak perlu pusing menulis script. Semuanya telah dibuat menjadi Fix dan kita hanya perlu mengatur bagian content dan interfacenya saja. Tidak demikian dengan Framework. Membangun sebuah aplikasi web dengan menggunakan framework, kita tetap harus menuliskan kode perintah PHP sesuai dengan ruang lingkungan yang disediakan oleh framework.

PHP Framework menggunakan metode pengembangan berbasis MVC. Namun apa itu MVC ? MVC merupakan suatu metode untuk memisahkan bagian-bagian dari suatu web aplikasi. MVC adalah kependekan dari Model View Controller. MVC terdiri dari tiga bagian yaitu;

  • Model : Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu kita dalam pengelolaan database seperti memasukkan data ke database, update data dan lain-lain.
  • View : View adalah bagian yang mengatur tampilan ke user. Bisa di katakan berupa halaman web.
  • Controller : Controller merupakan bagian yang menjembatani model dan view. Controller berisi script-script php yang berfungsi untuk memproses suatu data dan mengirimkannya ke halaman web.
  • Disinilah letak perbedaan utama antara framework dengan CMS atau PHP konvensional. Dengan metode MVC, bagian tampilan, logika serta query database diletakkan secara terpisah namun tetap sinkron sehingga pembuatan aplikasi menjadi lebih terstruktur dan sederhana. Model digunakan dalam menuliskan script database, Controller untuk mengembangkan logika pemrogramannya, sedangkan View berfungsi dalam menampilkan layout dari aplikasi yang kita buat. Kelebihan framework antara lain sebagai berikut :

  • Ringan dan cepat. Framework hanya melakukan pemanggilan pustaka/kelas yang dibutuhkan sehingga meminimalkan resource yang diperlukan sehingga ketika kita me-load sebuah halaman akan menjadi ringan dan cepat.
  • Menggunakan metode MVC. Seperti yang telah dijelaskan sebelumnya, dengan metode MVC akan mempermudah kita dalam memahami alur pemrograman karena untuk bagian tampilan, logika dan query database telah dipecah sedemikian rupa.
  • Mayortitas mendukung berbagai jenis database.
  • Berikut beberapa contoh PHP Framework beserta kelebihan yang dibawanya :

    CodeIgniter
    Kelebihan

  • Mudah digunakan dan tidak memerlukan konfigurasi yang rumit
  • Fungsi-fungsi pendukung yang cukup lengkap
  • Mendkung PHP4 dan PHP5
  • Mungkin merupakan Framework MVC paling populer dan paling banyak digunakan
  • Dokumentasi yang sangat bagus, friendly dan didukung oleh forum, wiki, dan komunitas yang besar
  • Kekurangan

  • Tidak mendukung AJAX, dan ORM
  • Meyediakan dan memisahan file-file dalam MVC pattern, tapi masih memberikan kebebasan user untuk melanggar aturan MVC
  • CakePHP
    Kelebihan

  • Dukungan terhadap AJAX, ORM
  • Automagic function seperti validasi input, dll, yang mempercepat coding
  • Support PHP4 dan PHP5
  • Lebih mencerminkan MVC yang sesungguhnya dibandingkan CI
    Komunitas pengguna yang besar dan forum cukup baik
  • Kekurangan

  • Manual yang ada tidak selengkap CI.
  • Butuh waktu belajar yang lebih lama untuk menguasai framework ini dibanding CI. Tapi jika sudah benar-benar mengerti, banyak kelebihan dibanding CI. Beberapa situs menyarankan anda untuk belajar dan terbiasa dulu
    dengan CodeIgniter baru kemudian mempelajari CakePHP.
    (http://www.zenperfect.com/2007/07/15/faceoff-codeigniter-vs-cakephp/)
  • Symfony
    Kelebihan

  • Dukungan terhadap AJAX, ORM.
  • Kompatibel dengan berbagai macam database.
  • Banyak library dan fungsi symfony yang sudah tersedia. Bahkan hampir mendekati CMS. Sehingga ada yang mengatakan ”Symphony is a CMS with a heart of a framework.” ini menjadi kelebihan sekaligus kekurangan.
  • Kekurangan

  • Tidak mendukung PHP4.
  • Relatif butuh waktu lama untuk mengerti framework ini.
  • Instalasi dan konfigurasinya cukup rumit.
  • Zend
    Kelebihan

  • Dukungan terhadap AJAX, ORM.
  • Berdasarkan informasi dari situs resminya, disebutkan bahwa fokus dari Zend Framework ini adalah untuk membangun aplikasi berbasis Web dan untuk memudahkan dalam mengakses API dari berbagai vendor seperti Google, Amazon, Yahoo!, dan Flickr.
  • Kekurangan

  • Tidak mendukung PHP4.
  • Manual yang ada kurang mengakomodasi kebutuhan.
  • Performanya relatif lambat (mungkin karena banyaknya library).
    Konon katanya Framework ini hanya cocok untuk orang dengan skill PHP yang sudah sangat tinggi.
  • Akelos

  • Merupakan Framework yang relatif baru dengan kemampuan yang handal dan lengkap
  • Kelebihan

  • Dukungan terhadap PHP4, PHP5, AJAX, ORM (cukup lengkap dan cukup mengakomodasi semua kebutuhan yang umum dari aplikasi php)
  • Kekurangan

  • Kurang adanya dukungan komunitas. Mungkin karena masih relatif baru
    Beberapa forum mengatakan bahwa framewok ini cukup banyak memakan memory