MODUL 5
Model View Controller
A. Kompetensi Dasar
3.5 Menerapkan aplikasi web dengan Model View Controller
4.5 Membuat aplikasi web menggunakan Model View Controller
B. Tujuan Pembelajaran
1. Setelah mencermati materi di buku dan mengakses berbagai literatur, siswa
mampu merumuskan konsep Model View Controller dengan baik.
2. Setelah mencermati materi di buku dan mengakses berbagai literatur, siswa
mampu menjelaskan prosedur pemrograman aplikasi web dengan MVC dengan
tepat.
3. Setelah berdiskusi dan meyimak penjelasan guru, siswa mampu menerapkan
aplikasi web dengan MVC dengan benar
4. Setelah menyimak beberapa contoh dan berlatih, siswa mampu merancang dan
membuat kode program aplikasi web menggunakan MVC dengan benar
5. Setelah berdiskusi dan menelaah berbagai informasi di buku dan literatur lainnya,
siswa mampu menguji program aplikasi web berbasis MVC dengan baik
C. Teori
1. Konsep MVC Pada Aplikasi Web
Guna memahami framework di PHP, minimal harus memahami konsep MVC
(Model, View, Controller). MVC memisahkan pengembangan aplikasi
berdasarkan kompinen utama yang membangun sebuah aplikasi seperti
manipulasi data, user interface dan bagian yang menjadi kontrol aplikasi. MVC
menjadi konsep yang populer, karena dinilai dapat mempercepat tugas Developer
untuk pembangunan aplikasi web ataupun mobile. Bahkan, karena kecepatannya
hingga dianggap efektif dalam membantu pembangunan aplikasi, MVC sudah
banyak diterapkan pada beberapa framework PHP, seperti Laravel, CodeIgniter,
Zend, dan Symfony.
Komponen yang membangun suatu MVC dalam suatu aplikasi adalah sebagai
berikut:
a. Model
Model mewakili struktur data. Model merupakan bagian yang bertugas untuk
mengatur, menyiapkan, memanipulasi, dan mengorganisir data (biasanya dari
basis data). Tugas yang ia lakukan meliputi memasukkan data ke basis data,
pembaruan data, menghapus data, dan lain-lain. Model menjalankan tugasnya
berdasarkan instruksi dari controller.
b. View
View merupakan bagian yang mengatur tampilan ke pengguna. Bisa dikatakan
berupa halaman web.
c. Controller
Controller merupakan bagian yang menjembatani model dan view. Controller
berisi perintah-perintah yang berfungsi untuk memproses suatu data dan
mengirimkannya ke halaman web.
Pada dasarnya fungsi utama MVC adalah mendukung proses pengembangan
aplikasi web atau mobile menjadi lebih cepat. Kenapa bisa lebih cepat? Karena
MVC memisahkan aplikasi menjadi tiga bagian, sehingga orang yang
mengerjakannya pun lebih banyak. Pada bagian model dan controller biasanya
akan ditangani oleh Back End Developer. Sementara itu, untuk bagian view akan
dikerjakan oleh Front End Developer bersama tim dari UI/UX.
Tak hanya itu saja, masih ada fungsi lain dari MVC yang tak kalah hebatnya,
seperti:
a. Penyelesaian bug atau error jadi lebih mudah ditangani. Adanya pemisahan
aplikasi pada konsep MVC membuat Developer lebih fokus menangani error
yang terjadi pada bagiannya masing-masing.
b. Pemeliharaan aplikasi bisa dilaksanakan lebih cepat. Adanya MVC membantu
tim Developer untuk memelihara atau mengembangkan suatu bagian dari
aplikasi. Contoh jika ingin menambahkan fitur, “tambahkan diskon” pada
aplikasi toko online. Tim Developer hanya perlu mengubah dan
menambahkan kode pada script.
c. Efektif waktu saat melakukan testing. Hal yang perlu dilakukan untuk
memastikan apakah aplikasi yang dibuat sudah bisa dipakai adalah dengan
melakukan testing. Umumnya, testing dilakukan setelah seluruh pembuatan
aplikasi telah selesai. Namun, pada konsep MVC kamu bisa menjalani testing
pada bagian mana pun yang telah siap, tanpa menunggu semuanya selesai.
Alur kerja MVC dalam sistem website sebenarnya cukup sederhana seperti
ditunjukkan pada bagan di atas. Namun, kalau penjelasannya masih terlalu teknis,
begini analoginya:
Sekarang, anggaplah Anda sedang berada di sebuah restoran. Dalam konsep MVC
ini, Anda adalah view, pelayan adalah controller, dan chef adalah model. Ketika
Anda memesan salah satu menu, pelayan akan mencatat pesanan Anda dan
memberikannya pada chef. Setelah itu, chef akan mencari bahan yang diperlukan
di kulkas (database) dan mulai memasaknya untuk Anda. Setelah selesai dimasak,
chef akan memberikan pada pelayan untuk diantarkan pada Anda. Nah, seperti
itulah cara kerja MVC pada setiap bagiannya.
1) Buatlah file index.php dalam folder utama (dalam modul ini nama
foldernya adalah mvc)
2) Buatlah file .htaccess dalam folder utama
Cara membuatnya adalah sebagai berikut:
o Buka notepad
o Kemudian klik menu file – Save As
o Pilih lokasi penyimpanan kemudian ketikkan nama file .htaccess
o Kemudian pada Save As Type pilih All File
b. Pembuatan Kode
1) File .htaccess
.htaccess atau yang sering disebut dengan hypertext access adalah file
konfigurasi server web Apache yang umumnya tersedia di File Manager
akun hosting Anda. File .htaccess umumnya digunakan untuk
memodifikasi dan menambahkan fungsi dan pengaturan tambahan ke
server Anda — bahkan jika Anda tidak memiliki akses ke server inti.
$this->controller = $route['default_controller'];
$url = $this->parseURL();
if(is_null($url)){
$url[0] = 'public';
}
if(file_exists('app/controller/'.$url[0].'.php')){
$this->controller = $url[0];
unset($url[0]);
}
// method
if(isset($url[1])){
if(method_exists($this->controller, $url[1])){
$this->method = $url[1];
unset($url[1]);
}
}
if(!empty($url)){
$this->params = array_values($url);
}
call_user_func_array([$this->controller, $this-
>method], $this->params);
}
private $dbh;
private $stmt;
$option =[
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
try{
$this->dbh = new PDO($dsn, $this->user,$this-
>pass, $option);
}catch(PDOException $e){
die($e->getMessage());
}
}
9) app/controller/HomeController.php
<?php
class HomeController extends Controller {
public function index(){
$this->view('AwalView');
}
}
10) app/controller/Siswa.php
<?php
class Siswa extends Controller {
public function index(){
$this->view('Siswa');
<legend>Edit Data</legend>
Nomor Induk Siswa<br>
<input type="text" name="nis" value="<?=$data['nis']?>"
readonly><br>
Nama siswa<br>
<input type="text" name="nama"
value="<?=$data['nama']?>" required><br>
Jenis Kelamin<br>
<select name="jk" required>
<option value="">-- Pilih Jenis Kelamin --</option>
<option value="Laki-Laki"
<?=($data['jenis_kelamin']=="Laki-
Laki")?"selected":""?>>Laki-Laki</option>
<option value="Perempuan"
<?=($data['jenis_kelamin']=="Perempuan")?"selected":""?>>P
erempuan</option>
</select>
<br>
Status<br>
<select name="stt" required>
<option value="">-- Pilih Status --</option>
<option value="1"
<?=($data['status']=="1")?"selected":""?>>Aktif</option>
<option value="0"
<?=($data['status']=="0")?"selected":""?>>Tidak
Aktif</option>
</select>
<br><br>
<input type="submit" name="update" value="Perbaharui">
</fieldset>
</form>
15) app/views/SiswaTambah.php
<form action="store" method="post">
<fieldset>
<legend>Input Data</legend>
Nomor Induk Siswa<br>
<input type="text" name="nis" placeholder="Nomor Induk
Siswa" required><br>
Nama siswa<br>
<input type="text" name="nama" placeholder="Nama Siswa"
required><br>
Jenis Kelamin<br>
<select name="jk" required>
<option value="">-- Pilih Jenis Kelamin --</option>
<option value="Laki-Laki">Laki-Laki</option>
<option value="Perempuan">Perempuan</option>
</select>
<br>
Status<br>
<select name="stt" required>
<option value="">-- Pilih Status --</option>
<option value="1">Aktif</option>
<option value="0">Tidak Aktif</option>
</select>
<br><br>
<input type="submit" name="insert" value="Simpan">
</fieldset>
</form>
16) app/views/TampilData.php
<hr>ini hasil dari view 2<br>
<table>
<tr>
<td>NIS</td>
<td>Nama</td>
<td>Jenis Kelamin</td>
<td>Status</td>
</tr>
<?php
foreach($data as $dt){
echo"<tr>";
foreach ($dt as $v2) {
echo "<td>$v2</td>";
}
echo "<td><a href='".BASEURL."/Siswa/edit/$dt[nis]'>Edit
Data</a></td>";
echo "<td><a
href='".BASEURL."/Siswa/delete/$dt[nis]'>Hapus</a></td></t
r>";
}
?>
</table>
17) public/.htaccess
<IfModule mod_rewrite.c>
Options All -Multiviews
</IfModule>
18) public/gaya.css
body{
margin:0px;
font-family:calibri;
}
table{
width:100%;
border-collapse:collapse;
}
table tr td, table tr th{
padding:5px;
}
table tr th{
background:#eee;
}
legend{
background:#666;
color: #fff;
padding: 2px 10px;
}
.bt{
color:#fff;
padding:5px 10px;
border:none;
}
.bt-edit{
background:#fa0;
}
.bt-del{
background:#707;
}
.bt-login{
background:#707;
font-size:18px;
}
c. Pengujian aplikasi
Untuk menguji aplikasi web mvc yang telah dibuat, silakan lakukan pengujian
fungsi dari setiap tombol dan inputan yang ada. Apabila ada yang kurang
sesuai, mintalah bantuan kepada guru anda untuk mengatasi masalah yang
dihadapi.
D. Aktivitas
1. Pendahuluan
a. Pelajari kembali materi tentang pemrograman berorientasi objek!
2. Percobaan
a. Buatlah tampilan agar lebih menarik!
3. Pengetahuan
a. Apa itu hypertext access? Berikan penjelasan yang mudah dipahami!
b. Apa itu class dan objek? berikan juga contoh dalam kode program PHP!
c. Gambarkan alur komunikasi HTTP request dan reply yang umum digunakan
saat membuat website dengan menggunakan MVC!
d. Apa yang dimaksud dengan konstruktor dan apa fungsinya! Berikan contoh
penulisan kode program PHP!
e. Tuliskan contoh kode program PHP untuk mengakses method dalam suatu
class!
4. Proyek
Buatlah pengelolaan data buku dengan menggunakan konsep MVC!
E. Penilaian Proyek
Nama Peserta Didik :
Kelas :
Wonosobo, 20__
Peserta didik Guru Mapel
------------------------------ ------------------------------