LARAVEL 5.7 : MVC Flowchart

January 02, 2019 by

Dua minggu kemudian, aplikasi web yang diminta sudah selesai dikembangkan. Dengan penuh senyuman anda mempresentasikan web yang telah dikembangkan ke klien. Selesai presentasi, klien meminta beberapa perubahan. Bentuk font-nya kurang bagus. Biru di warna latarnya coba digelapkan sedikit. Elemen navigasi terlalu naik. Tolong ditambahkan data pengunjung halaman. Dan masih banyak perubahan lainnya. Anda lalu kembali bekerja untuk memperbaiki aplikasi, dan kemudian melakukan presentasi lagi. Hal ini terjadi berulang kali, sampai akhirnya di akhir proyek, kode aplikasi web anda sudah tidak dapat dikenali.

Kenapa kode tidak lagi dapat dikenali? Ada banyak faktor. Misalnya, kode untuk menampilkan HTML tercampur dengan kode query basis data karena tambahan fitur yang diminta oleh klien pada tengah malam. Waktu itu, anda terlalu mengantuk untuk berpikir jernih dan akhirnya kode tercampur dan sulit diubah lagi karena perubahan di satu tempat akan merusak kode di tempat lain. Mungkin ada kode penanganan kesalahan yang bercampur dengan kode penulisan tampilan, karena anda terburu-buru mengubahnya begitu selesai rapat. Intinya adalah, kode menjadi buruk dan sulit dikembangkan. Kenapa? Karena semua bagian kode sudah tercampur aduk seperti spaghetti.

Untuk menghindari kode agar tidak menjadi spaghetti, maka kita harus menerapkan prinsip Pembagian Fokus (Separation of Concern). Secara singkat, SoC atau Separation of Concern merupakan teknik di mana kita membagi-bagikan kode ke dalam beberapa bagian. Masing-masing bagian kode ini kemudian memiliki tanggung jawabnya masing-masing. Bisa saja ada bagian kode yang khusus menangani basis data. Ada bagian kode yang menangani tampilan. Ada bagian kode yang menghubungkan tampilan dengan basis data.

MVC, atau Model View Controller, merupakan salah satu implementasi prinsip SoC untuk aplikasi yang kita kembangkan. Dalam MVC, kita membagikan bentuk aplikasi dalam tiga bagian utama, yaitu:
  1. Model, yaitu bagian kode aplikasi yang berhubungan dengan basis data.
  2. View, yaitu bagian kode yang berhubungan dengan tampilan ke pengguna.
  3. Controller, yaitu bagian kode yang menghubungkan antara Model dan View.

Alur kerja aplikasi web kita ketika user mengunjungi salah satu halaman yaitu:
  • Browser berhubungan dengan server untuk akses halaman.
  • Request (permintaan) browser ditangani oleh bagian Controller dari kode kita.
  • Controller akan melakukan pemanggilan ke Model untuk mendapatkan data yang relevan, dan kemudian mempersiapkan data tersebut untuk ditampilkan.
  • Controller memberikan data yang diperlukan kepada view.
  • View menampilkan data dan berbagai elemen antarmuka tambahan yang diperlukan.

Meskipun memerlukan banyak langkah hanya untuk menampilkan satu halaman web, kita dapat langsung melihat keuntungan tambahan dari penggunaan MVC, yaitu bagaimana setiap bagian memiliki tanggung jawab masing-masing. Ingin mengubah query yang digunakan agar menjadi lebih cepat? Langsung saja edit kode pada bagian Model. Designer juga dapat bekerja pada bagian view jika ingin mengubah tampilan, tanpa perlu takut merusak keseluruhan kode.


Contoh Kasus

Ketika anda memasuki perpustakaan kemungkinan anda diminta untuk mengisi buku tamu. Kebetulan buku tamu di perpustakaan yang anda kunjungi menggunakan aplikasi web. Jadi di sana sudah terdapat satu komputer, di mana setiap pengunjung perpustakaan harus melewati dan mengisi datanya melalui komputer tersebut.
  1. Ketika anda melihat layar komputer, di sana ditampilkan form untuk mengisi data diri pengunjung. Kita bisa simpulkan bahwa di sini, browser (sebagai client) meminta aksi kepada server (yang ditangani oleh controller) untuk menampilkan halaman form input data. Lalu controller memutuskan dan mengerti bahwasanya ia hanya perlu menampilkan view. Maka controller memanggil dan mengembalikan view (atau halaman) yang diminta.
  2. Anda kemudian mengisi data. Lalu menekan tombol submit. Di sini browser (sebagai client) mengirimkan data anda kepada server. Data itu ditangkap oleh controller dan controller tahu apa yang harus dia lakukan. Yaitu memanggil model dan memberi data tersebut untuk kemudian disimpan (oleh model) ke dalam database. Setelah proses penyimpanan selesai, controller memanggil dan mengembalikan view kepada user sebagai informasi bahwa data telah masuk.
  3. Jika ada pengunjung baru, maka kembali ke step 1.

Framework yang Menggunakan Konsep MVC

Untuk framework PHP, ada cukup banyak dan hampir semuanya menggunakan konsep MVC:
  • Laravel
  • Symfony
  • CakePHP
  • Zend
  • Codeigniter (versi 3 kebawah sudah tidak recommended untuk dipelajari)
  • dll

Untuk framework Python di antaranya:
  • Django
  • Turbogears2
  • Watson-Framework
  • dll

Untuk framework Nodejs di antaranya:
  • Express
  • Adonis
  • Sails.js
  • Total.js
  • Mean.js
  • Mojito
  • dll

0 comments:

Post a Comment