Kerangka CodeIgniter MVC (Model View Controller) dengan Contoh

Apa itu MVC?

Standar MVC untuk Model-View-Control. Ini adalah pola arsitektur yang membagi aplikasi menjadi tiga komponen utama.

1. Model berhubungan dengan logika bisnis dan interaksi database

2. Pengendali mengoordinasikan aktivitas antara model dan tampilan

3. View bertanggung jawab atas penyajian data

Berikut ini adalah beberapa keuntungan dari pola arsitektur MVC

  • Kopling longgar - komponen ada dan berfungsi secara independen satu sama lain.
  • Fleksibilitas – seseorang dapat dengan mudah membuat perubahan pada masing-masing komponen
  • Peningkatan produktivitas – lebih dari satu orang dapat mengerjakan proyek secara bersamaan. Pengembang front-end dapat mengerjakan tampilan dan presentasi sementara pengembang backend dapat fokus pada model dan karena sistem digabungkan secara longgar, sistem ini berfungsi pada akhir hari.

Model

Model bertanggung jawab untuk berinteraksi dengan sumber data. Ini biasanya berupa database, tetapi bisa juga berupa layanan yang menyediakan data yang diminta. Ini juga merupakan praktik umum untuk memasukkan logika bisnis ke dalam model dan bukan ke pengontrol. Praktek ini biasa disebut dengan pengontrol kurus model gemuk.

Model biasanya menulis data ke dalam database, menyediakan mekanisme untuk mengedit dan memperbarui, serta menghapus data. Dalam aplikasi web modern, model menggunakan pola desain akses data seperti catatan aktif untuk mempermudah interaksi dengan database.

Misalnya, CodeIgniter menggunakan perpustakaan Active Record bawaan untuk membantu model sementara kerangka kerja lain seperti Laravel menggunakan Eloquent Object Relational Mapper (ORM) yang membantu akses data.

pengawas

Pengontrol mendengarkan permintaan sumber daya yang masuk dari pengguna. Ini bertindak sebagai perantara antara model dan tampilan dan terkadang juga mengimplementasikan beberapa aturan bisnis. Katakanlah pengontrol menerima permintaan untuk mendaftarkan pengguna ke database.

Pengendali dapat melakukan validasi data pada apa yang telah dikirimkan untuk memastikan bahwa semua parameter yang diperlukan telah dikirimkan. Jika ada yang hilang, pengguna akan diarahkan ke halaman pendaftaran dengan pesan kesalahan yang sesuai ditampilkan. Pengendali juga dapat meminta model untuk melakukan validasi lebih lanjut dengan memeriksa apakah alamat email yang dikirimkan sudah ada. Jika semua aturan validasi lolos, pengendali mengirimkan data ke model untuk diproses dan menunggu respons.

Setelah model memproses informasi dan mengembalikan respons positif, pengontrol memuat tampilan yang sesuai dan meneruskan data yang dikembalikan dari model sebagai parameter.

Liha

Tampilan berkaitan dengan data yang disajikan kepada pengguna akhir. Dalam aplikasi web, tampilan sering kali berisi HTML, CSS, dan opsional JavaNaskah. Tampilan berisi kode pemrograman minimum. Kode yang terdapat dalam tampilan biasanya digunakan untuk mengulang kumpulan data yang diterima sebagai parameter dari model atau fungsi pembantu untuk membersihkan data atau membuat tautan guna mengedit rekaman. Sebagian besar aplikasi web modern biasanya menggunakan mesin templating yang mendefinisikan sintaksnya sendiri yang lebih mirip pseudocode dan dapat dengan mudah dipahami oleh desainer. Saat bekerja dengan CodeIgniter, merupakan praktik umum untuk menggunakan tag PHP pendek dan struktur kontrol. Untuk menampilkan sesuatu di CodeIgniter, seseorang dapat menggunakan kode berikut

<?=$title?>

Sebagai lawan

<?php
echo $title;
?>

Struktur kendali biasanya ditulis sebagai berikut

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Seperti yang Anda lihat dari contoh di atas, tampilan akan menggunakan kombinasi PHP dan HTML alih-alih menyertakan semuanya dalam kode PHP murni.

Bagaimana kerangka kerja MVC bekerja?

Gambar berikut menunjukkan cara kerja framework MVC

Kerangka MVC berfungsi

Pengontrol menerima permintaan dari pengguna, berinteraksi dengan model database jika perlu, lalu mengembalikan hasilnya ke browser dalam bentuk kode HTML yang diinterpretasikan oleh browser ke dalam format yang dapat dibaca manusia dan ditampilkan kepada pengguna.

Pengontrol CodeIgniter

Sekarang mari kita uraikan apa yang baru saja terjadi ketika kita memuat URL di atas ke dalam browser web.

Buka file pengontrol Welcome.php yang terletak di aplikasi/pengontrol

Anda seharusnya dapat melihat kode berikut

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

SINI,

  • didefinisikan('BASEPATH') OR exit('Tidak ada akses skrip langsung yang diperbolehkan'); mencegah akses langsung ke pengontrol jika permintaan tidak datang melalui index.php. ini untuk tujuan keamanan.
  • class Welcome extends CI_Controller {…} mendefinisikan kelas pengontrol Selamat Datang dan memperluas kelas induk CI_Controller
  • public function index(){…} mendefinisikan metode indeks yang merespons URL http://localhost:3000
    • $ini->muat->lihat('pesan_selamat datang'); memuat tampilan Welcome_message yang terletak di direktori aplikasi/tampilan

Kami sekarang akan memperbarui metode indeks sebagai berikut

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

SINI,

  • $ini->beban->model('model_pelanggan'); memuat model pelanggan.
  • $data['pelanggan'] = $ini->model_pelanggan->get_pelanggan(3); memanggil metode get_customer dari model_pelanggan dan meneruskan parameter 3. Dalam contoh ini kita telah mengkodekan nilainya secara keras tetapi dalam aplikasi kehidupan nyata ini akan menjadi parameter dari URI.
  • $ini->muat->lihat('pesan_selamat datang',$data); memuat tampilan Welcome_message dan meneruskan variabel $data ke tampilan

Model CodeIgniter

Sekarang mari kita buat tampilan yang kita referensikan pada kode di atas. Untuk mempermudah, model kami tidak akan berinteraksi dengan Database tetapi akan mengembalikan catatan pelanggan statis. Kami akan bekerja dengan database di tutorial berikutnya.

Buat file Customers_model.php di aplikasi/model

Tambahkan kode berikut

<?php
class Customers_model extends CI_Model {
public function get_customer($id) {
$data['id'] = 3;
$data['first_name'] = 'John';
$data['last_name'] = 'Doe';
$data['address'] = 'Kingstone';
return $data;
}
}

SINI,

  • class Customers_model extends CI_Model {…} mendefinisikan model Customers_model yang memperluas CI_Model.
  • public function get_customer($id) {…} mendefinisikan metode dapatkan pelanggan berdasarkan id pelanggan
  • $data[…] mendefinisikan nilai statis pelanggan fiktif kami. Ini harus berupa baris yang dikembalikan dari database.
  • kembalikan $data; mengembalikan data pelanggan.

Yaitu untuk model kita. Sekarang mari kita ubah tampilan pesan_selamat datang

Buka Welcome_message.php yang terletak di

application/views/welcome_message.php

Ganti kode dengan yang berikut ini

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CodeIgniter MVC Basics</title>
</head>
<body>
<h1>Customer Details Card</h1>
<p>Customer ID : <strong><?=$customer['id']?></strong></p>
<p>First Name  : <strong><?=$customer['first_name']?></strong></p>
<p>Last Name   : <strong><?=$customer['last_name']?></strong></p>
<p>Address     : <strong><?=$customer['address']?></strong></p>
</body>
</html>

Simpan perubahannya

Muat URL berikut di browser web

http://localhost:3000/

Anda seharusnya dapat melihat kartu pelanggan seperti yang ditunjukkan pada gambar di bawah ini

Model CodeIgniter

Kesimpulan

  • MVC adalah pola arsitektur yang membagi aplikasi menjadi tiga komponen utama
  • Model bertanggung jawab untuk berinteraksi dengan sumber data
  • Pengontrol mendengarkan permintaan sumber daya yang masuk dari pengguna
  • Dalam aplikasi web, tampilan sering kali berisi HTML, CSS, dan opsional JavaNaskah
  • Pengontrol menerima permintaan dari pengguna, berinteraksi dengan model database jika perlu, lalu mengembalikan hasilnya ke browser dalam bentuk kode HTML