Penutup dan Pengembangan Lebih Panjut

Sejauh ini kita telah melihat bagaimana mengembangkan sebuah framework PHP dengan memperhatikan prinsip Seperation of Concern. Tentunya masih terdapat sangat banyak kekurangan dari framework kecil-kecilan yang kita kembangkan, baik dari segi fitur maupun dari sisi lainnya seperti keamanan atau performa. Kembali diingatkan bahwa tujuan utama dari tulisan ini adalah untuk memberikan pengertian mendasar dan abstrak akan cara kerja framework umumnya, bukan demonstrasi bagaimana membuat framework yang dapat dipakai di lingkugnan produksi.

Selama mengikuti tulisan bagian 1 sampai 5, kita telah berhasil membuat sebuah framework MVC sederhana. Konsep dasar yang digunakan hampir semua framework MVC hampir sama: terdapat kelas Router untuk mengatur URL dan memetakan URL ke kelas Controller, kemudian kelas Controller tersebut akan memanggil View yang tepat. Koneksi ke Model dilakukan secara otomatis, dan index.php, sebagai halaman awal aplikasi, kebanyakan hanya diisi dengan konfigurasi awal aplikasi.

Jika ingin mengembangkan aplikasi yang menggunakan framework MVC, biasanya kita harus melakukan hal-hal berikut:

  1. Buat template utama yang menampung seluruh tampilan antarmuka.
  2. Kembangkan kode untuk pengambilan / pengolahan data melalui kelas Model.
  3. Buat method atau action untuk Controller yang relevan. Pastikan untuk memanggil kode Model yang baru dikembangkan pada langkah 2.
  4. Rancang tampilan pada file View yang sesuai dengan konvensi framework, sehingga View selalu terpetakan ke Controller.

Dengan mengerti konsep dasar di atas, maka kita dapat mempelajari framework PHP yang ada dengan lebih cepat, dan bisa dikatakan menjadi tidak asing lagi dengan pola rancangan MVC. Tentu saja langkah-langkah di atas ini juga berlaku untuk framework yang kita kembangkan (coba saja tambahkan fitur baru dengan mengikuti langkah 2-4).

Pengembangan Lebih Lanjut

Jika tertarik untuk lebih lanjut mengembangkan framework sederhana ini, baik sebagai pembelajaran maupun tantangan tambahan, berikut adalah fitur-fitur penting untuk lingkungan produksi yang belum diimplementasikan:

  • Penanganan kesalahan yang baik. Pada kelas Router misalnya, ketika URL tidak ditemukan, kita langsung hanya melemparkan Exception. Idealnya framework mampu memberikan kode 404 atau halaman khusus 404 ketika rute tidak ditemukan. Jika memang terdapat Exception, harusnya framework mengembalikan kode 503 atau halaman khusus 503.
  • Pembacaan parameter POST dan lainnya. Ketika pengguna mengirimkan data melalui form HTML, akan lebih aman jika kita menggunakan POST daripada GET. Anda dapat mengembangkan kelas yang mengolah baik GET maupun POST untuk dikirimkan ke Controller, sehingga Controller mampu menangani kedua jenis parameter ini. Untuk sekarang, kita hanya membaca parameter GET.
  • Validasi Model. Hal ini berkaitan dengan validasi data yang masuk dan keluar dari Model. Validasi sangat penting untuk memastikan tidak terdapat data yang salah atau tidak diinginkan di dalam sistem. Tentu saja bagian ini tidak perlu dikembangkan lagi jika mengambil rute implementasi dengan solusi data seperti Doctrine.
  • dan masih banyak fitur-fitur umum sebuah dari framework.

Penutup

Setelah membaca tulisan ini dari awal sampai akhir, penulis berharap pembaca dapat meresapi inti dari MVC, mulai dari komponen pembangun sampai dengan cara kerjanya. Mudah-mudahan dengan mengerti MVC, penggunaan framework MVC modern seperti Symfony atau Laravel tidak lagi menjadi momok bagi anda. Meskipun anda mampu mengembangkan sebuah framework, penulis tetap lebih menyarankan untuk mengggunakan framework yang sudah ada, karena framework seperti Symfony atau lainnya telah matang teruji dan mengalami banyak perbaikan keamanan dan bug. Mengerti konsep dasar dan ide pengembangan framework adalah satu hal, mengembangkan framework yang sudah teruji dan matang dengan puluhan ribu jam pengembangan dan ratusan kontributor adalah hal yang berbeda.

Akhir kata, terima kasih telah membaca, dan tentunya silahkan tinggalkan kritik, saran, ataupun masukan-masukan lainnya pada kolom komentar yang ada! Sekali lagi, terima kasih!

Bagikan Tulisan
comments powered by Disqus
Kembali ke bertzzie.com