Anda di halaman 1dari 11

MVC (MODEL – VIEW - CONTROLLER)

1.Pengertian MVC
MVC Definisinya adalah “Pola arsitektur pada perancangan perangkat lunak berorientasi objek”.

Konsep MVC dapat kita gunakan kebahasa pemograman yang lain yang mana bahasa tersebut
memiliki Konsep Object Orienterd Program. Dimana tujuan MVC ini adalah untuk “Memisahkan
antara tampilan, data dan proses”.

Adapun Program tanpa MVC itu seperti ini:

Dimana Tampilan, Data, dan Proses Dibuat dalam satu tempat/file.

Nah Problem nya, Bagaimana nanti jika kita membuat sebuah program yang besar, dimana
yang mengerjakan project tersebut bukan hanya kita melainkan teamwork. Maka Nanti akan
merepotkan jika menggunakan satu tempat / file saja.

Nah nanti dengan MVC dapat memisah-misah komponen yang ada dihalaman web menjadi 3
komponen utama yaitu, Model, Controller, dan View.

Dimana Controller Adalah komponen utama yang mengolah proses nya. Dan kita dapat
simpulkan bahwasan nya Model itu data, Controller Proses dan View Tampilan.
2.Kenapa Harus MVC?
Kenapa kita harus belajar MVC?

Dimana program kita lebih terstruktur dan terorganisir, dan memisahkan logic dan tampilan,
dan memudahkan kita melakukan perawatan pada pogram, dan supaya kita dapat mengetahui
konsep implementasi dari konsep oop yang sebelumnya telah kita pelajari, MVC digunakan oleh
banyak Web Application Framework.

Framework yang menggunakan konsep mvc.

PHP = CodeIgniter,Laravel, Yii, dll

JAVA = Spring MVC,JSF,Struts, dll

Python = Django, CherryPy, dll

Ruby = Ruby on Rails, Sinatra, dll

JAVASCRIPT = Angular js, React, Backbone.js, dll

3.Gambaran Mengenai MVC


Dimana nanti ketika kita membuka aplikasi nya nanti yang dibuka pertama kali nya yaitu
controller default yang memanggil method default.

Contoh = Ketika pertama kali membuka www.facebook.com maka diarahkan ke controller dan
method default nya. Padahal asli nya yang dibuka oleh facebook itu seperti ini:
www.facebook.com/index.php.

Nah untuk membuat hal seperti diatas tersebut, nanti kita membuat nya menggunakan
htaccess untuk mengelola request yang dikirim lewat url.

Nah misal nanti user mengisikan controller atau method asal-asalan diurl, maka nanti program
kita akan cek, ada gak controller dan method yang direquest tersebut. Jika ada maka tampilkan
jika tidak ada maka arahkan ke controller dan method default.

Dicontroller dan method kita dapat memberikan parameter, kalau kita tidak mengirimkan
parameter, maka ia akan menampilkan default parameter.
4.Penjelasan Mengenai MVC

Sebenarnya diframework yang memiliki konsep MVC ini lebih complex lagi arsitektur nya. Tidak
hanya ada 3 tapi banyak lagi, Contoh nya Application Flow Pada CodeIgniter.
Yang pertama yang diakses itu pasti index.php, halaman utama, dan diarahkan kerouting fungsi
nya untuk menentukan bagian mana yang akan diakses/controller mana yang diakses -> setelah
itu ia memasuki komponen security yang mana request yang dikirim diakan cek apakah ada
sesuatu yang jahat diurl atau request nya, nanti dibersihkan nya. Lalu setelah aman -> ia masuk
ke application controller -> dimana didalam nya ada controller models,library,helper,plugins,
dan script nanti dia cek apakah program membutuhkan models,library atau yang lain nya tidak?
Kalau sudah nanti akan diolah oleh controller nanti controller menentukan view mana yang
akan ditampilkan ->sebelum masuk ke user ia masuk ke->Caching digunakan agar aplikasi
berjalan lebih cepat. Apakah user pernah login ? nah nanti mempermudah user.

5.Struktur MVC kita


Struktural yang kita buat nanti

Index.php -> routing request di url itu yang bertanggung jawab controller yang mana? Nah
nanti kalau sudah tau nanti dikirim ke controller nya lalu dicontroller dicek, butuh model gak?
Butuh data gak? Kalau butuh diakan akses model, kalau enggak gakpapa, nanti diakan
menentukan view nya, lalu ditampilkan di index.php

File init untuk memanggil sekumpulan file disebut dengan teknik bootstrapping.

File yang didepan nya huruf capital biasanya menunjukan didalam nya adalah class yang fungsi
nya untuk membentuk mvc.

App menyimpan file dan folder utama dari aplikasi mvc.

Yang ada di folder core itu isi nya class class utama dan didalamnya mengelola routing dll.

Folder controllers extends dari class utama.

Dan class utama diinstance di index.php

Folder views isinya interface yang akan disajikan oleh controllers

Nah di views kita bisa buat sub folder lagi.

Contoh controllers home yang didalam nya banyak method yang bisa direpresentasikan
menjadi beberapa halaman, tiap tiap view nya kita simpan kedalam folder views->home.
(Gambar Struktur MVC)

5.1 Routing
Mengelola controllers dan method default dan mengatur url nya.

Dimana nanti kita memparsing atau membuat url yang panjang menjadi singkat dan tak terlihat
oleh user. Oleh karena itu kita buat method didalam class app yang berfungsi mengambil url
lalu memecah nya sesuai dengan kemauan kita.

1.Jika $GET_[‘url’] ada maka kita simpan ke $url.

2.kemudian kita htaccess atau kita blok access dari user terlebih dahulu.

3.htaccess berisi konfigurasi untuk server web.

Option-Indexes

Arti perintah diatas adalah jika, didalam folder app tidak ada index.php maka jangan tampilkan
folder nya, ini kita buat difolder app.

Difolder public juga dibuat silahkan lihat video lengkap nya.


4.Kita pecah setelah dari pada public menjadi sebuah array. Namun kita harus hilangkan / kita
hanya butuh stringnya.

Dengan cara kita pakai rtrim untuk menghapus / di akhir url.

Dan kita aman kan url dari karakter” yang aneh dan jahat dengan cara pakai filter_var, dan
($url, FILTER SANITIZE_URL)

Kemudian kita pecah $url menggunakan explode dengan yang dihapus itu (‘/’, $url).

5.2 CONTROLLER
Nah dimana nanti array yang kita kirim diurl dapat diketahui mana controller mana method dan
mana parameters. Dan jika kita tidak mengisikan controller dan method serta parameter maka
program akan menampilkan default nya.

Kita buat controller,method dan parameters di class App sebagai property berisi nilai
default.lalu kita buat di controller Home.php dengan class lalu extends dari App kemudian kita
buat didalam nya method default.

A.Controller

DiApp kita buat logika, ada gak controller atau method yang diinputkan oleh user diprogram
kita, if(file_exists(‘../app/controllers’ .$url[0]nomor index nya controller diurl . lalu concat
dengan .php)) artinya ada gak di app/controllers file $url[0] yaitu contoh Home.php, kalau ada
kita timpa controllerdefault dengan controller yang baru. Lalu setelah itu kita hilangkan
controller nya dari element array nya,dengan cara unset($url[0]);

Lalu kita require_once ‘..app/controllers’. $this->controller .’php’

kita hubungkan dengan file App.

Dan kita instance controller diApp agar supaya kita bisa memanggil method nya nanti.

B.Method

Untuk method nya kita cek dulu jika method ada $url[1] kalau ada cek ada gak didalam
menggunakan method_exists( dari controller Home contoh, ada gak $url[1]){
kalau ada method default dengan $url[1], lalu kita unset($url[1])}

C.Params
If(!empty= artinya tidak kosong($url)){lalu kita ambil data nya dengan array_values dari url. Lalu
kita masukan ke property params = default di class App.

Lalu jalankan controller dan method dan kirim params jika ada,dengan cara
call_user_func_array([$this->controller], $this->method, $this->params);

Dan kita buat di about itu method defaultnya di class About function index, karena defaultnya
index kecuali jika kita jalankan page.

Untuk menangkap params lewat url, yaitu kita buat di method nya parameters lalu tampilkan
diecho, dan jangan lupa buat parameters defaultnya biar gak error.

5.3 VIEWS
Dimana kita menyimpan interface yang kita simpan difolder views. Jadi controller melalui
method nya akan memanggil tampilan nya, dengan perantara Controllers.php yang berada di
folder core.

$this->view(‘home/index’); artinya = kita nanti ke folder views->home->index.

DiControllers didalam class nya kita buat sebuah function view(tampilan nya apa? Dan ada data
yang mau dikirim gak?) ada 2 parameter. Dan

View($view, $data = []) data kita kasih defaultnya, setelah itu kita require_once’../app/views’
.$view ‘.php’; maka jika di controller home-> method index()->$this->views(‘home/index’);

Maka setelah dikirim pakai view ke controllers menjadi ..app/views/home/index.php.

Maka kita sudah bisa menghubungkan controller dengan view nya melalui kelas utama
controller sebagai perantara.

Nah bagaimana jika kita ingin mengirimkan parametersnya, maka dimethod view($view, dan
$data) jadi dari controllers home contoh dia mengirim melalui view(home/index dan juga
parameternya) ditangkap oleh view dicontroller utama dan dikirim ke view home, dengan cara
kita buat $data di controller utama sebagai parameter method view seperti diatas, begitu pula
dengan controllers home/semisalnya, dimethod nya kita buat $data[‘nama’] = $nama
$data[‘umur’] = $umur dst.

$this->view(‘about/index’, $data); otomatis $umur sama $nama dikirim. Ke view nya


Untuk menampilkan nya diview, kita buat p<> nama saya <?= $data[‘nama’];?> ,umur saya <?=
$data[‘umur’]?> selesai.

Ditiap halaman yang sudah kitabuat, awal hlmn html dan bawah nya kita pisahkan, karena
setiap view memiliki awal html dan bawah yang sama. Kita bisa membuat nya menjadi satu lalu
dihubungkan ke semua view, jadi ditiap view hanya mengisi body nya saja, tidak header dan
footer dari html. Dalam artian html awal dan akhirnya defaultnya kita jadikan template. Nah
kalau kita mau menambahkan linkhref atau script cukup dihalaman view nya.

Kita buat difolder view , folder template. Didalam nya header.php isinyakita ambil dari doctype
sampai body>. Kemudian ditemplate buat file baru yaitu footer.php kita simpan penutup body
dan /html.

Cara jalanin nya diview yaitu dengan cara kita buka controller home,

Kita buat dimethod default $this->view(‘templates/header’)

$this->view(‘home/index’);

$this->view(‘templates/footer’);

Dicontroller lain dimethodnya kitabisa hubungkan ke templates saja. Dan hapus awal dan akhir
htmlnya.Namun bagaimana jika kita ingin mengubah setiap title pada view nya??

Kita buka header.php

Title Halaman <?= $data[‘judul’]; ?>

Nah ditiap method kita kirim judulnya.

Misal diHome /index

$data[‘judul’] = ‘Home’;

$this->view(‘templates/header’, $data); selesai. Begitu pula dengan controller yang lain nya.

5.4 ASSETS
Menerapkan Framework css bootstrap pada program kita.dan bagaimana dihalaman kita nanti
nya menampilkan gambar.
Dimana nanti kita membuat file constants yang mana untuk menyimpan data data constants
kita di folder core. Isinya constants apa aja yang kita butuhkan. Dengan cara kita define(‘nama
variable’, ‘url utama menuju bootstrapdan jquery nya http://localhost/phpmvc/public’)

Dimana struktur file kita

Localhost -> php mvc-> public didalam nya ada banyak folder, ada js,css da nada bootstrap.
Dengan kita mengarahkan ke public, kita tinggal pilih jika suatu saat kita menghubungkan ke
js,css dan dan bootstrap.

Nah di init kita buat require_once ke constants.php;

Contoh misal kita ingin menyambungkan header.php ke bootstrap.

Href=“<?= BASEURL; ?>/css/bootstrap.css” nah begitu pula jika ingin menghubungkan ke js atau
yang lain nya.

5.5 models
Dimana kita mendapatkan data bukan dari url tapi dari tempat yang lain. Nah tempat itu nanti
kita sebut dengan model. Didalam model ini isinya data,object domain,data mapper,service
intinya bisnis logic aplikasi yang kitabuat. Sederhana nya tempat kita untuk mengolah data.

A.Bagian pertama

Contoh =

Class Home extends Controller utama dimethod index()-> $data[‘nama’] = $this->model(‘nama


modelnya’) karena model ini nanti class kita panggil method didalam nya ->getUser(); nah nanti
ketika user masuk ke halaman home/index dia bisa menginputkan nama melalui class modelnya
dan method getuser contoh. Lalu dikirim ke $this->view(‘home/index’, $data);

Nah maka kita buat difolder model fileUser_model dengan class yang sama juga . didalam nya
kita buat property private $nama = ‘Zepi’; nah ini sederhana nya, nanti kita bisa menggunakan
cara ini untuk mengambil data dari database,api,atau service lain nya.

Lalu jika sudah ada datanya, declass user_model kita buat method didalamnya getUser();
mereturn $this->nama;
Nah setelah itu di file controller.php class utama controller kita buat method model(yang isinya
nama model $model)dan isinya kita require_once ‘..app/models/’. $model .’.php’; karena
parameter nya yang dikirm model maka kita instance dulu return new $model;

Selesai.

B.Bagian Kedua

Kemudian kita mau menampilkan data mahasiswa secara manual dulu.

1.Kita buat diheader.php di navbar mahasiswa dan link hrefnya ke folder mahasiswa nanti nya.

2.Stelah itu kita buatdi folder controllers file mahasiswa, kitabuat sebuah class mahasiswa dan
buat method index dengan isi $data[‘judul’] = daftar mahasiswa ,$this-
>view(‘templates/header’) dan footer ditengah keduanya $this->view(‘mahasiswa/index’);

3.Terakhir untuk menjalankannya kita extends controllers mahasiswa ke controllerutama.php


yang berada dicore. Karena untuk menjalankan method view yang berada dicontroller utama.

4.kita buat difolder views itu folder mahasiswa / index.php untuk tampilan

5.dimodels kita buat file baruMahasiswa_model.php dan diclass nya kita buat property private
$mhs isinya array didalam array datamahasiswa. Danbuat method getAllMahasiswa() return
$this->mhs;

6.kemudian kita ke controllers mahasiswa.php kita kirim data nya $data[‘mhs’] = $this-
>model(‘Mahasiswa_model’)->getAllMahasiswa(); lalu kita kirim $this-
>view(‘mahasiswa/index’, $data);

7.di view kita tinggal foreach <?=$mhs[‘nama’]?><?=$mhs[‘jurusan’]?> dst..

C.Bagian Ketiga

1.kita buat database mahasiswa langsung kita buat data didalam nya

2.ke models/Mahasiswa_model data $mhs kita hapus saja, nanti kita query dari database.

3.menggunakan PDO kita bisa connect kedatabase dan bisa mengambil datanya lebih fleksible
dari pada mysqli maka kitabuat dulu property declass Mahasiswa_model private $dbh buat
koneksi kedatabase, private stmt untuk menyimpan statement nya

4.kita lakukan koneksi kedatabase dengan method contruct supaya ketika dijalankan yang
pertama kali dilakukan adalah koneksi dulu kedatabse. __contruct()
Isinya $dsn arttinya identitas serverkita . $dsn kita koneksi ke PDO nya dulu
$data=’mysql:host=localhost;dbname=namadatabase’;

5.lalu dibawah nya kita pakaitry catch untuk cek koneksi berhasil atau tidak

Try{ $this->dbh = new PDO($dsn, ‘root’, ‘’);

Catch ketika error(PDOException $e)die($e->getMessage()) artinya kita berhentikan program


dan beri pesan error.

6.di method getAllMahasiswa masih di file yang sama. Kita isi $this->stmt = $this- >dbh-
>prepare(‘SELECT * FROM mahasiswa’);

$this->stmt->execute(); nah kita sudah berhasil query dan menjalankan nya.

7.tinggal kita return $this->stmt->fetchAll(PDO::FETCH_ASSOC); artinya $stmt yang sudah berisi


data semua mahasiswa kita return dan ambil semua data nya dalam bentuk array assoc;

8.selesai

5.6 Database Wrapper


Pembungkus database. Kita butuh sebuah class yang dapat mengelola database untuk data
dimodel mana pun, sebelum nya kita mengelola data spesifik untuk model mahasiswa saja. Nah
kita pengen nya kita bisa pakek pengelolaan datanya untuk model mana pun.

1.kita buat folder config di app. Kemudian buat file config.php yang isinya data data dari
database berupa constanta. Seperti kita ngedefine host,nama,password,dan nama database.
Untuk digunakan declass database.php.

2.buat file database.php kemudian buat property private isinya nama,password,host,dan dbn,
dan dbh,stmt;

3.kemudian buat method construct

Anda mungkin juga menyukai