Menggunakan framework memang akan mempersingkat waktu pembuatan aplikasi, namun tidak semua project cocok memakai framework. Perdebatan apakah sebaiknya memakai framework atau tidak (yakni menggunakan kode "PHP saja" atau dikenal sebagai "PHP Native") menjadi topik abadi di berbagai forum diskusi.
Alasan Untuk Tidak Menggunakan Framework
Ada beberapa alasan kenapa kita sebaiknya tidak menggunakan framework:
- Aplikasi yang dibuat cukup sederhana.
- Belum memiliki dasar web programming yang cukup.
- Ingin mengejar performa.
Aplikasi yang dibuat cukup sederhana. Meskipun bisa, tapi kurang pas jika menggunakan framework hanya untuk membuat program menghitung luas segitiga. Untuk yang seperti ini sebaiknya pakai PHP native saja karena akan jauh selesai lebih cepat.
Belum memiliki dasar web programming yang cukup. Ini sering terjadi terutama bagi pemula yang ingin cepat-cepat masuk ke framework dengan melewatkan banyak materi dasar. Framework termasuk materi PHP tingkat advanced yang perlu dasar yang kuat. Tidak hanya PHP saja, tapi juga materi dasar web programming lain seperti HTML, CSS, MySQL dan JavaScript.
Ingin mengejar performa. Sebuah framework PHP umumnya terdiri dari ratusan hingga ribuan file PHP yang saling bekerja sama. Bahkan Laravel 10 terdiri dari sekitar 7.700 file PHP dengan total ukuran 47 MB. Memang tidak semua file ini terpakai untuk setiap project, tapi performa yang dihasilkan mungkin bisa lebih tinggi jika dibuat tanpa framework.
Namun juga bukan berarti tanpa framework otomatis aplikasi akan berjalan dengan lebih cepat. Hal ini bergantung keahlian kita dalam meramu kode program PHP.
Performa juga merupakan salah satu indikator terpenting dari keberhasilan sebuah framework. Tim dibalik Laravel tentu selalu berusaha untuk mendapatkan performa terbaik.
Alasan Sebaiknya Menggunakan Framework
Dan berikut beberapa alasan sebaiknya menggunakan framework:
- Tersedia fitur siap pakai.
- Mengikuti best practice.
- Mudah untuk kolaborasi
- Mudah membaca kode program.
- Keamanan aplikasi
Tersedia fitur siap pakai. Framework sudah menyediakan berbagai komponen siap pakai untuk membantu kita dalam merancang aplikasi. Sebagai contoh, di Laravel dengan 1 perintah sederhana kita bisa meng-generate form register lengkap dengan fitur login dan logout. Jika menggunakan PHP native, membuat fitur ini bisa butuh waktu seharian penuh.
Tidak hanya itu, umumnya framework PHP menyediakan cara singkat untuk membuat fitur-fitur lain, seperti pembuatan form, validasi, menampilkan pesan error, mengakses database, pembuatan layout, dsb.
Mengikuti best practice. Framework memiliki aturan penulisan baku yang tidak bisa diubah. Dengan demikian kita akan "dipaksa" mengikuti cara penulisan framework. Cara penulisan ini sudah dipikirkan oleh ribuan programmer profesional yang merancang framework tersebut.
Sebagai contoh, sebagian besar framework PHP menggunakan konsep M-V-C, yakni singkatan dari Model, View dan Controller. Konsep MVC bertujuan untuk memisahkan 3 bagian program: kode untuk mengakses database (disebut sebagai model), kode untuk tampilan (view) dan kode untuk mengatur alur logika program (controller). Dengan pemisahan ini, aplikasi kita menjadi lebih rapi dan mudah di kelola.
Bagi pemula, pembagian ini tampak merepotkan. Karena untuk sekedar membuat tampilan 1 halaman saja, kita butuh meng-edit minimal 3 file serta mengatur berbagai konfigurasi. Namun dalam jangka panjang, MVC sangat memudahkan pengelolaan website terutama untuk project besar.
Mudah untuk kolaborasi. Menggunakan framework juga memudahkan pembuatan kode program yang dibuat oleh tim. Framework memiliki aturan penulisan yang sudah baku sehingga setiap anggota tim bisa dengan mudah membaca alur kode program yang dibuat oleh programmer lain. Misalnya jika ada masalah dengan database, maka problem utama kemungkinan besar ada di model (bagian 'M' dari MVC).
Selain itu, konsep MVC juga membuat pemisahan antara front-end dan back-end yang lebih baku. Tim front-end yang mengembangkan design web bisa fokus ke sisi tampilan saja (view), sedangkan tim back-end bisa fokus ke alur logika aplikasi (controller dan model).
Mudah membaca kode program. Konsep yang sudah baku juga bermanfaat jika ada pergantian anggota tim. Tanpa framework, butuh waktu lama bagi programmer baru untuk memahami kode program yang sudah ada. Sangat mungkin konsep berfikir programmer sebelumnya berbeda jauh dengan programmer yang akan menggantikan.
Namun jika aplikasi tersebut dibuat dengan framework, setiap programmer harus mengikuti cara yang sudah diatur oleh framework tersebut. Misalnya kode program untuk pengaturan tampilan ada di View, pengaturan database ada di Model, dsb. Sehingga lebih mudah bagi programmer baru untuk melakukan modifikasi.
Keamanan Aplikasi. Keamanan untuk sebuah aplikasi "real world" merupakan hal wajib, namun kadang kita tidak tau apa yang harus diamankan dan bagaimana membuat kode programnya.
Sebagai contoh, ada celah kelemahan web yang dikenal sebagai CSRF atau Cross-Site Request Forgery, yakni teknik mengisi form (seperti form login), dengan kode program yang bukan berasal dari website kita. Celah ini bisa dimanfaatkan untuk membuat bot atau program yang terus-menerus mencoba mengisi form login.
Mayoritas framework PHP (termasuk Laravel), sudah menyediakan cara untuk mengatasi masalah ini, yaitu dengan memaksa kita untuk membuat sebuah CSRF token. Laravel akan menampilkan error jika sebuah form tidak memiliki CSRF token. Cara input token ini juga sangat sederhana, hanya perlu satu perintah singkat.
Fitur keamanan seperti ini sudah lebih dahulu dipikirkan oleh tim pengembang Laravel, sehingga aplikasi yang kita buat relatif lebih aman.
Melihat plus dan minus sebuah framework, keuntungan yang didapat sebenarnya jauh lebih banyak.
Cukup banyak programmer yang setelah mempelajari framework seperti Laravel, akan merasa "tergantung" dan ingin membuat aplikasi dengan framework saja, tidak lagi dari nol menggunakan native PHP. Kecuali, untuk project-project yang relatif sederhana.
Lanjut, kita akan bahas tentang keunggulan framework Laravel dibandingkan framework PHP lain.
Mas maaf kenapa tidak ada contoh konsep struktur dan code dari MVC, sangat sulit bagi saya sebagai pemula untuk mempelajarinya. Terimakasih.