Model, View, dan Controller

Apa itu MVC?

Komponen-Komponen

  • Views
  • Models
  • Controllers

Apa itu MVC?

Setiap kali Anda membuat sebuah aplikasi, Anda perlu menemukan cara untuk mengatur kode agar mudah menemukan file yang tepat dan mudah untuk dipelihara. Seperti kebanyakan framework web, CodeIgniter menggunakan pola Model, View, Controller (MVC) untuk mengorganisir file. Pola ini memisahkan data, tampilan (presentasi), dan alur aplikasi menjadi bagian-bagian yang terpisah.

Perlu dicatat bahwa ada banyak pandangan mengenai peran pasti dari setiap elemen, tetapi dokumen ini menjelaskan pendekatan versi kami. Jika Anda memiliki pemahaman yang berbeda, Anda bebas menyesuaikan cara penggunaan tiap bagian sesuai kebutuhan.

  • Model mengelola data aplikasi dan membantu menerapkan aturan bisnis khusus yang dibutuhkan aplikasi.
  • View adalah file sederhana, dengan sedikit atau tanpa logika, yang menampilkan informasi kepada pengguna.
  • Controller bertindak sebagai “perekat” (penghubung), yang mengatur pertukaran data antara view (atau pengguna yang melihatnya) dan penyimpanan data.

Pada dasarnya, controller dan model hanyalah kelas yang memiliki tugas tertentu. Tentu saja, keduanya bukan satu-satunya jenis kelas yang dapat Anda gunakan, tetapi merekalah inti dari cara framework ini dirancang untuk digunakan. Bahkan, mereka memiliki direktori khusus di dalam folder app untuk penyimpanannya, meskipun Anda bebas menyimpannya di mana saja selama menggunakan namespace yang benar. Hal tersebut akan dibahas lebih lanjut di bawah.

Mari kita lihat lebih dekat masing-masing dari tiga komponen utama ini.


Komponen-Komponen

Views

View adalah file paling sederhana dan biasanya berisi HTML dengan sedikit kode PHP. Kode PHP tersebut seharusnya sangat sederhana, biasanya hanya untuk menampilkan isi variabel atau melakukan perulangan terhadap beberapa data dan menampilkannya dalam bentuk tabel.

View mendapatkan data untuk ditampilkan dari controller, yang mengirimkan data tersebut sebagai variabel yang dapat ditampilkan dengan pemanggilan echo sederhana. Anda juga dapat menampilkan view lain di dalam sebuah view, sehingga memudahkan untuk menampilkan header atau footer yang sama di setiap halaman.

View umumnya disimpan di dalam folder app/Views, namun dapat menjadi sulit dikelola jika tidak diatur dengan baik. CodeIgniter tidak memaksakan jenis pengorganisasian tertentu, tetapi praktik yang baik adalah membuat direktori baru di dalam folder Views untuk setiap controller. Kemudian, beri nama file view sesuai dengan nama method-nya. Cara ini memudahkan pencarian di kemudian hari.

Sebagai contoh, profil pengguna mungkin ditampilkan melalui controller bernama User, dengan method bernama profile. Maka file view untuk method tersebut dapat disimpan di:

app/Views/user/profile.php

Pengorganisasian seperti ini adalah kebiasaan dasar yang baik. Dalam beberapa situasi, Anda mungkin perlu mengaturnya secara berbeda. Itu bukan masalah. Selama CodeIgniter dapat menemukan file tersebut, maka file tersebut dapat ditampilkan.


Models

Tugas model adalah mengelola satu jenis data dalam aplikasi. Data tersebut bisa berupa pengguna, postingan blog, transaksi, dan sebagainya.

Dalam konteks ini, model memiliki dua peran utama:

  1. Menerapkan aturan bisnis pada data saat data diambil dari atau disimpan ke database.
  2. Menangani proses penyimpanan dan pengambilan data dari database.

Bagi banyak pengembang, kebingungan sering muncul saat menentukan aturan bisnis apa yang harus diterapkan. Aturan bisnis berarti setiap pembatasan atau persyaratan terhadap data yang ditangani oleh model. Contohnya termasuk:

  • Menormalkan data mentah sebelum disimpan agar sesuai standar perusahaan.
  • Memformat kolom tertentu sebelum diberikan ke controller.

Dengan menempatkan aturan bisnis di dalam model, Anda menghindari pengulangan kode di berbagai controller dan mencegah kesalahan akibat lupa memperbarui bagian tertentu.

Model biasanya disimpan di dalam folder app/Models, tetapi dapat dikelompokkan menggunakan namespace sesuai kebutuhan.


Controllers

Controller memiliki beberapa peran penting. Peran yang paling jelas adalah menerima input dari pengguna dan menentukan tindakan yang harus dilakukan. Biasanya ini melibatkan:

  • Mengirim data ke model untuk disimpan, atau
  • Meminta data dari model yang kemudian diteruskan ke view untuk ditampilkan.

Controller juga dapat memuat kelas utilitas lain jika diperlukan untuk menangani tugas khusus yang berada di luar tanggung jawab model.

Tanggung jawab lainnya adalah menangani semua hal yang berkaitan dengan permintaan HTTP, seperti:

  • Redirect
  • Autentikasi
  • Keamanan web
  • Encoding
  • Dan lainnya

Singkatnya, controller adalah tempat Anda memastikan bahwa pengguna memiliki izin yang tepat dan mendapatkan data dalam format yang dapat mereka gunakan.

Controller biasanya disimpan di dalam folder app/Controllers, tetapi dapat dikelompokkan menggunakan namespace sesuai kebutuhan.

Leave a Reply

Your email address will not be published. Required fields are marked *