Perdebatan mengenai perlu tidaknya kita menggunakan framework memang tidak pernah berakhir. Ada orang yang sedemikian kuatnya memegang teguh prinsip bahwa framework itu tidak dibutuhkan. Prinsip “No Need Framework” pada dasarnya tidak bisa disalahkan, karena benar sekali bahwa untuk membuat aplikasi, ada aplikasi-aplikasi dalam level kerumitan tertentu yang tidak membutuhkan framework sama sekali. Sebut saja contoh, sebuah perusahaan yang ingin dibuatkan website yang dapat memberikan informasi selengkap-lengkapnya mengenai perusahaan itu. Jika aplikasi-nya benar sederhana, maka penggunaan framework ataupun CMS tentu menjadi terlalu berlebihan.
Alasannya sederhana saja, kita tidak membutuhkan tools di backend process yang rumit, module-module independent untuk tujuan-tujuan khusus, fungsi-fungsi yang dipakai berulang-ulang, atau hal-hal rumit lainya. Cukup design page-nya sesuai dengan HTML dan CSS yang kita inginkan, masukan contentnya, atau kalaupun contentnya dinamis, buat koneksi ke database, ambil data sesuai kebutuhan dan lempar ke tampilan di depan. Jika butuh sentuhan java script, dan web tools lainnya, tinggal dimasukkan dan selesai sudah. Jika ada module administrasi content (CMS) dapat kita buat sendiri bahkan tanpa bantuan CMS yang sudah sangat umum tersedia saat ini.
Nah, jika semudah ini membuat aplikasi, lalu kenapa harus pakai framework? Bukankah framework akan membuat kita terikat dengan aturan-aturan framework yang ketat? Dan bukankah framework akan membuat kita kehilangan kebebasan dalam mengatur tampilan dan hasil akhir? Ini adalah sedikit dari puluhan pertanyaan yang ingin diajukan dan sedikit situasi yang sangat ingin dihindari oleh mereka yang tidak mau menggunakan framework.
Seperti yang kita ketahui bersama, untuk membuat sebuah web aplikasi dengan content dinamis, penggunaan database menjadi sebuah keharusan. Oleh karena itu, siklus sederhana berikut ini akan menjadi gambaran buat semua programmer di seluruh dunia, baik pemula maupun mahir. #1. Buat tabel di database server, #2. Buat sekelompok script untuk koneksi ke database, #3. Buat sekelompok fungsi untuk mengambil data yang kita butuhkan, #4. Buat tampilan dan tampilkan semua data yang dipanggil sesuai dengan format CSS dan HTML-nya. Proses selesai.
Ketika prinsip sederhana ini diterapkan dalam pembuatan aplikasi yang nyata, empat proses ini pada akhirnya akan berevolusi menjadi tingkatan-tingkatan module yang berdiri sendiri namun tetap berkaitan sesuai dengan kebutuhan aplikasi yang ingin dibuat. Penjelasannya adalah seperti ini,
Step #1. Database. Di pasaran saat ini kenyataan berbicara bahwa ada puluhan jenis database server dengan kelebihan dan kekurangan masing-masing. Tidak peduli mana yang terbaik, yang jelas setiap programmer punya argumen dan fanatisme yang berbeda-beda mengenai database yang mereka hendak gunakan. Oleh karena perbedaan database inilah, membuat step #2, yaitu seting koneksi ke database, menjadi step yang sedikit lebih rumit.
Setiap database memiliki Statement Query yang berbeda-beda. Jika kita berbicara dalam level aplikasi web sederhana dengan satu database tertentu seperti yang dicontohkan di atas, maka step ini menjadi langkah yang tidak terlalu dipusingkan oleh sang programmer. Tapi masalah sebenarnya baru akan muncul ketika akan terjadi pergantian database, dimana semua SQL Statement yang ditanamkan dalam kode tiba-tiba menjadi tidak compatible dengan database baru yang akan digunakan. Kita tentu sebagai programmer, menginginkan fleksibitas dimana dengan kode yang sama, kita dapat mengkoneksikan kode kita ke berbagai jenis database. Kita bisa saja membuat sebuah blok kode sendiri untuk mengatasi masalah ini, tapi ini berakibat kita akan harus mengorbankan banyak waktu kita yang berharga untuk meriset semua kemungkinan bug yang akan terjadi. Bukankah di internet sana ada banyak bertebaran kode yang dapat membantu kita mengatasi hal ini? Ada banyak memang, tapi satu jawaban pasti bahwa setiap framework sudah dilengkapi fasilitas ini untuk mengatasi masalah ini. Sekarang kembali ke pertanyaan awal, apakah aplikasi web yang kita buat ini membutuhkan fleksibilitas koneksi ke database yang beraneka ragam atau tidak? Jika tidak, sampai dengan step #2 ini anda tidak membutuhkan framework.
Step #3. Fungsi untuk mengambil data yang kita butuhkan. Ini keliatannya sebuah fungsi yang tidak dibutuhkan dalam pembuatan aplikasi sederhana. Alasannya, aplikasi sederhana biasanya langsung mengeksekusi query dan langsung menampilkan data tersebut di halaman depan. Akan tetapi, dalam lingkungan aplikasi yang makin membesar dan makin rumit, sudah dapat dipastikan step #3 tidak akan digabung dengan step #4 karena kebutuhan yang terjadi oleh karena berbagai alasan berikut ini.
Pertama, sekelompok data yang mau diambil ini akan bergantung siapa audience yang membutuhkannya. User Guest, sering dibedakan dengan Authenticated User, Authenticated User sudah pasti berbeda dengan Admin User. Autenticated User sendiri, kadang-kadang masih dibagi lagi dalam level creator, auditor, approval, delegated admin, dsb. Bahkan, user Admin di setting memiliki hak yang lebih besar terhadap keseluruhan sistem.
Kembali ke kebutuhan akan framework, apakah pembagian content-content yang didasarkan pada kebutuhan user seperti ini dapat kita buat dalam kode buatan kita sendiri? Tanpa framework? Tanpa CMS? Jawabannya tentu saja bisa tapi kita akan membutuhkan waktu berapa lama untuk membuatnya? Jika kita pikir-pikir ini akan membutuhkan waktu yang sangat lama, maka bantuan framework ataupun CMS pada akhirnya menjadi sebuah keharusan.
Alasan Kedua, dalam pembuatan aplikasi web yang besar dan rumit, akan sangat jarang ditemukan seorang programmer yang sanggup membuat semua kode sendirian. Pembagian tugas menjadi sangat penting. Step #3 dan step #4 yang tadinya sederhana kini menjadi 2 step yang penerapannya terpisah. Ada programmer yang khusus untuk menangani backend process dan fungsi-fungsi yang terjadi di belakang layar, dan ada programmer yang khusus untuk menangani frontend, menata tampilan dan layout sebaik, seinteraktif dan semudah mungkin.
Tugas programmer di backend adalah memastikan semua data yang dikirim dari database adalah data yang benar dan akan diberikan untuk kode pemanggil (yang ditulis oleh programmer di front end) dengan tepat dan benar. Tugas programmer di front end adalah meminta data yang diinginkan ke fungsi-fungsi di back end dan memformat tampilan, layout, warna, gambar dan komposisi web yang mudah dan sebaik mungkin. Atas dasar ide inilah maka sebuah framework diciptakan. Framework jelas mempertegas batasan tugas-tugas dalam berkolaborasi. Framework menghindarkan kita dari pembuatan kode yang berulang-ulang atau memiliki persamaan sifat kebutuhan.
Alasan ketiga. Expansi dari aplikasi itu sendiri. Sudah bisa dipastikan juga bahwa aplikasi yang dibangun tanpa framework akan jauh lebih sulit dikembangkan dibandingkan aplikasi yang dibangun dengan framework. Kita harus Jujur mengakui bahwa penggunaan framework memang akan membuat programmer dibatasi dalam koridor-koridor dan aturan-aturan framework yang ketat tapi jika kita melihat sisi positifnya adalah kesempatan bagi kita untuk mengembangkan aplikasi menjadi lebih besar akan terbuka karena framework menawarkan expansi aplikasi dalam batasan yang sangat tinggi.
Dimana sebenarnya posisi PHP Framework dibanding PHP CMS dalam siklus pembuatan sebuah aplikasi web? Untuk menjawab pertanyaan ini, mari kita liat ilustrasi berikut ini. Anggap saja kita mau belajar melukis dimana PHP adalah kuas, tinta dan kanvasnya. Dengan tiga tools ini, kita tentu saja sudah dapat mulai menggambar apa saja yang terlintas dalam pikiran kita. Jika kita pelukis amatir, maka kita sudah bisa mulai menggambar. Tanpa bantuan dan tutor, kita sama sekali jangan berharap lukisan kita akan sangat baik.
Langkah awal terbaik agar kita dapat menggambar dengan baik adalah belajar membuat sketsa. Jika analogi ini dikembalikan dalam koridor pembuatan aplikasi PHP, maka sketsa ini bisa dianggap sebagai PHP Framework. Sketsa sejatinya memang belum terlihat sebagai sebuah gambar lukisan yang utuh, tapi dengan melihat sketsa maka kita sudah dapat membayangkan lukisan itu akan menjadi seperti apa.
Kehebatan seorang pelukis, sejatinya terlihat dari cara dia membuat sketsa. Demikian juga seorang programmer. Kehandalan seorang programmer akan terlihat ketika dia mendisain framework aplikasinya dengan baik jauh sebelum aplikasi ini menjadi makin besar dan makin rumit. Ketika dia mampu memaksimalkan framework, maka aplikasi itu akan memiliki daya fleksibitas yang tinggi. Mudah dalam segala hal. Mudah untuk dikembangkan, mudah untuk dipindah-pindah, mudah untuk berganti-ganti theme atau berganti-ganti database, mudah untuk di-install, mudah dipelajari, mudah dikonfigurasi, dan semua kemudahan-kemudahan lainnya yang dapat ditawarkan.
PHP Framework jelas memiliki kepentingan yang berbeda dengan PHP CMS. Jiak kita kembali ke ilustrasi pelukis diatas, posisi CMS (*mungkin*) lebih tepat digambarkan seperti lukisan lain yang bisa kita ikuti dengan mudah di kanvas kita sendiri. Koleksi contoh lukisan bahkan mungkin ada ribuan, dan kita tinggal memilih mana contoh lukisan yang mau kita ikuti. Terkadang karena kebutuhan tertentu, kita dapat menggambar sedikit berbeda dengan contoh lukisan yang ingin kita ikuti. Dalam konteks CMS, ini berarti butuh sedikit sentuhan modifikasi kode.
Dari sisi kecepatan pembuatan aplikasi , jelas PHP CMS akan jauh lebih cepat ketimbang PHP Framework. Ibarat pelukis, melukis melalui sketsa atau mengikuti contoh gambar tentu mengikuti contoh gambar akan lebih dahulu selesai.
Menjadi programmer PHP Framework, memang membutuhkan usaha yang lebih keras ketimbang PHP CMS, karena programmer PHP Framework akan berurusan dengan problematika di programming backend dan sekaligus programming di front end. Iyah, begitulah kenyataannya. Semua framework tidak menyediakan template apapun. Semua kode harus ditulis nol, syukur-syukur ada beberapa framework, seperti Yii Framework yang menyertakan Auto Generation Code sehingga sedikit membantu usaha kita dalam menulis kode di awal-awal pembuatan aplikasi dan modul.
Jadi tetap perlu dipahami bahwa market yang dituju oleh programmer PHP Framework dan PHP CMS tentu berbeda. Programmer PHP Framework jelas memiliki tujuan market aplikasi yang jauh lebih luas daripada PHP CMS. Tapi dari sisi tahap penyelesaian akhir aplikasi, PHP CMS memiliki siklus yang lebih pendek daripada programmer PHP Framework. PHP Framework dapat didisain dengan mudah untuk menjadi sebuah PHP CMS tapi PHP CMS jauh lebih lebih sulit didisain menjadi PHP Framework. PHP CMS membidik content web aplikasi yang sifatnya lebih banyak data untuk kepentingan read-only, sedangkan PHP Framework ditujukan untuk aplikasi yang memiliki kepentingan CRUD (Create, Read, Update, Delete) yang lebih intens.
Perlu dipahami, disini saya tidak hendak mengatakan bahwa PHP Framework jauh lebih baik daripada PHP CMS atau bahkan non-framework. Bukan itu. Sebagai software programer, kita sebaiknya bahkan seharusnya mengerti senjata apa yang kita gunakan menghadapi tantangan aplikasi yang disodorkan kepada kita. Untuk aplikasi yang dianggap sederhana, non-framework mungkin sudah lebih dari cukup. Untuk aplikasi content web yang lebih rumit, PHP CMS akan dapat membantu pekerjaan kita menjadi lebih ringan. Untuk tingkatan integrasi, kolaborasi, extensifikasi, PHP Framework akan sangat membantu kita membuat sebuah aplikasi menjadi tak terbatas.
Kesimpulan akhir. Framework, CMS, tools hebat apapun yang tersedia saat ini, bukanlah solusi terbaik atas semua tantangan programming. Kunci sebenarnya ada di tangan sang programmer itu sendiri, apakah dia mampu memaksimalkan semua tools yang dia kuasai untuk mengatasi semua persoalan kode yang terjadi di lapangan. Framework bisa diakali untuk situasi tertentu, CMS bisa dimodifikasi untuk kepentingan tertentu, dan Non-Framework bisa saja menjadi solusi yang lebih baik daripada framework maupun CMS. Asal kita mengerti dan menguasai, maka tidak ada yang tidak dapat kita atasi. Selamat bercoding-ria..
Mo nanya Om, sory masi newbie ni pake framework.
Sebuah paket pertanyaan newbie nih untuk pengguna framework.
Biasanya saya design programnya langsung pada webroot, misalnya menggunakan lokal server Wamp c:\wamp\www\folder_aplikasi
Nah yang jadi pertanyaan, bagaimana penggunaan framework ini sendiri?
Setelah dilakukan instalasi php.exe framework\yiic.php webapp. (dst..) dan berhasil.
Sekarang bagaimana penempatan page.php saya? apakah ada folder khusus untuk penempatannya?
Mohon pencerahan secerah2nya bagi kami para newbie.
Terima kasih Gan Peter!
framework itu pada dasarnya sama dengan bahasa native PHP.. hanya saja, framework itu memiliki kelebihan yakni fitur2 dan fungsi2 yang selalu kita gunakan dalam pembuatan aplikasi apapun, tidak perlu dibuat secara khusus. Contoh saja, salah satu dari sekian ratus fitur. URL Manager untuk keperluan SEO. Bukannya semua aplikasi membutuhkan SEO?.. daripada pusing buat standard SEO menurut kita, kenapa nggak pake formula2 yang sudah disediakan oleh framework dan kita sebagai pengguna tinggal menggunakannya saja.
Keuntungannya? banyak sekali. #Penghematan waktu development tentunya. Bayangkan saja ada ratusan fitur yang mestinya kita bikin satu2, tapi kini udah disediakan sama framework. #Jaminan Keamanan. Hampir mustahil kita dapat mengamankan website 100%. terlalu banyak lubang disana-sini. Mempercayakan aplikasi kita pada framework tentu lebih baik karena framework dibuat oleh ahli2 yang jauh lebih pakar dari kita soal masalah security. Dan masih banyak keuntungan lainnya…
Keburukannya? tergantung sudut pandang programmer-nya. Menggunakan framework jelas kita wajib mengikuti semua aturan2 (a.k.a. API, Design Pattern) dari framework tersebut. Buat orang2 tertentu ini menyebalkan karena nggak ada kebebasan mengembangkan fitur. Buat saya it’s OK.
Soal penempatan folder, framework Yii, ditaroh selevel dengan aplikasi kita karena semua request dari user itu wajib di re-route ke framework dulu.. baru menuju kode2 yang kita buat. Kebetulan karena Yii Framework itu OOP maka wajib hukumnya seperti itu..
Penjelasannya sangat mencerahkan.
CMIIW, jadi in my case untuk membuat aplikasi pada server lokal misalnya saya taroh di direktori:
c:\wamp\www\myApp
Sedangkan untuk framework Yii sendiri saya tempatkan di:
c:\wamp\www\myYii
kurang lebih seperti itu ya?
Boleh2 aja… di dalam folder MyYii ada file .htaccess yang berguna memblok URL ke folder framework..
pendapatku cuma ada dua mas, native atau framework, CMS itu bisa dibuat pake framework atau native, contoh seperti CMS joomla versi 1.XX dibuat menggunakan php native, dan untuk yang versi 2.XXX d buat menggunakan PHP framework menggunakan metode MVC. PHP native yang saya maksud adalah penulisan PHP cara lama atau tidak berbasis framework atau menggunakan metode MVC
thank you for comment… pendapatnya saya terima mas.. pemahaman saya waktu menulis artikel ini, masih terlalu rendah sebetulnya.. saya pikir saya perlu merevisinya lagi dan mempertimbangkan pendapat mas Heruno.. thx yah…
mas mau tanya kira-kira ada contoh alur atau gambarannya sebuah aplikasi absensi dengan yii??
bth pencerahan, mklum masih newbie .. 🙂
tergantung kebutuhan.. tapi basicnya, kamu butuh tabel karyawan, tabel jabatan, tabel absensi dan tabel nilai rupiahnya.. Ini tabel paling basic. tabel absensi isinya sederhana, id_karyawan, in dan out doang. nilai rupiah-nya akan bergantung apa jabatannya (dilookup dari tabel jabatan), dst.. kira2 seperti itu sih..
Reblogged this on I Muhammad Ridwan Sugiharto.
Mantap mas…, artikelnya…semangat tetep nulis Gan….
Postingan yang bagus mas,,, penjelasannya mudah dipahami,..,, thanks sebelumnya
Thx yah… bahasan ini termasuk materi yang relatif berat.. senang rasanya kalau agan bisa memahaminya… salam kenal yah…
nice posting,, penjelasan yang sangat mudah dipahami,, thanks sebelumnya.. 🙂 salam kenal dari saya…
Yohana… Berdasarkan catatan sejarah yang dicatat di website Yii, pendiri Yii Framework adalah Qiang Xue yang awalnya membuat Prado Framework. Jadi Yii tidak dikembangkan dari framework lain, tapi murni dibuat oleh Qiang Xue sendiri.. Untuk informasi lebih lanjut dapat dibaca disini:
http://www.yiiframework.com/about/
mantappppp gan. lanjuutt
sebetulnya kalo Yii itu perkembangan dan framework apa mas ?
seperti halnya kohana framework yang merupakan perkembagan dari CodeIgniter, meskipun code nya banyak yang berubah.