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”.
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.
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.
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.
Yang ada di folder core itu isi nya class class utama dan didalamnya mengelola routing dll.
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.
2.kemudian kita htaccess atau kita blok access dari user terlebih dahulu.
Option-Indexes
Arti perintah diatas adalah jika, didalam folder app tidak ada index.php maka jangan tampilkan
folder nya, ini kita buat difolder app.
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]);
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.
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 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.
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,
$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??
$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’)
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.
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 =
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
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’);
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);
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
6.di method getAllMahasiswa masih di file yang sama. Kita isi $this->stmt = $this- >dbh-
>prepare(‘SELECT * FROM mahasiswa’);
8.selesai
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;