Kita tahu bahwa Codeigniter sejak awal menganut konsep MVC. Karena itu, ia begitu terkenal. Soalnya, implementasi MVC di CI mudah dipahami.
Apa itu MVC?
MVC adalah singkatan dari Model–View–Controller. MVC merupakan sebuah pola desain arsitektur yang umum digunakan dalam pengembangan aplikasi.
Masih ingat latar belakang mengapa kita harus pakai framework?
Yap, biar kode program lebih konsisten dan tersetruktur. Sehingga kita akan mudah kolaborasi dengan tim.
Nah, si MVC ini adalah pola penulisan kode yang umum dipakai.. dimana kode untuk Model di taruh dalam folder yang sama, begitu juga dengan kode untuk View dan Controller.
Apa itu Model?
Model adalah kode yang bertugas untuk membuat pemodelan data. Kadang juga dipakai untuk pemodelan bisnis. Model bisa mengakses data dari Database dan juga sumber lainnya.
Intinya:
Kalau berkaitan tentang data, itu tugasnya model.
Apa itu View?
View adalah kode yang bertugas untuk membuat tampilan aplikasi.
Ingat:
Fokusnya untuk membuat tampilan aplikasi, bukan yang lain. Kita tidak boleh query data dari view, meskipun itu bisa dilakukan.
Kadang juga kita akan membuat sedikit logika di dalam view, seperti logika untuk menampilkan dan menghilangkan elemen tertentu.
Apa yang kita lihat di aplikasi, itu adalah kode dari View.
Apa itu Controller?
Nah, si Controller inilah yang bertugas menyatukan Model dan View.
Jadi, setiap ada request.. Controller akan bertanggung jawab untuk membalas request tersebut.
Jika itu request untuk menyimpan data ke database, maka Controller harus memanggil Model yang bertanggung jawab untuk data tersebut. Lalu meminta model untuk menyimpannya ke database.
Jika itu request untuk view data, maka Controller akan mencari kode View yang bertanggung jawab untuk menampilkan data tersebut.
Kadang juga Controller akan membutuhkan beberapa library dan helper untuk memproses request.
Intinya:
Controller bertanggung jawab untuk membalas request dari client.
Tapi sebelum itu.. ada router di depan controller yang bertanggung jawab untuk menentukan Controller mana yang akan dieksekusi.