PHP MVC
Konsep pemrograman mvc
Pemrograman Web 2 – 4 SKS
Controller
Mvc
Controller
Penjelasan Controller…
Controller bertanggung jawab atas aliran eksekusi
aplikasi. Bertugas untuk menyediakan data yang diambil
dari model untuk keperluan bagian view
Praktek
Controller
Praktek
Menambah isi file [Link]
Membuat controller baru [Link] dan [Link]
Praktek kali ini bertujuan untuk membuat kelas App dapat menyimpan
hasil parsing url berupa nama controller dan method kedalam variabel
Praktek <?php
class App {
protected $controller = 'Home';
protected $method = 'index';
protected $params = [];
Isi file App public function __construct(){
ditambah //memeriksa controller yang ada di url
$url = $this->parseURL();
if (file_exists('../app/controllers/' . $url[0] . '.php')){
$this->controller = $url[0];
unset($url[0]);
}
require_once ('../app/controllers/' . $this->controller . '.php');
$this->controller = new $this->controller;
//memeriksa method yang ada di url
if ( isset($url[1]) ){
if ( method_exists($this->controller, $url[1]) ){
$this->method = $url[1];
unset($url[1]);
}
}
Praktek //memeriksa paramater yang ada di url
if ( !empty($url)){
$this->params = array_values($url);
}
Isi file App //Jalankan controller, method, dan parameter jika ada
ditambah call_user_func_array([$this->controller,$this-
>method],$this->params);
}
/* Kelas untuk mengambil isi url yang dikirimkan lewat url */
public function parseURL(){
if ( isset ($_GET['url']) ){
$url = rtrim($_GET['url'], '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
return $url;
}
}
}
?>
Praktek Penjelasan Kode…
Dibuat 3 parameter $controller, $method, dan $params
Kode dibawah akan memeriksa keberadaan file controller (missal [Link])
di direktori controllers. Jika ada maka nama controller (missal Home) yang
berada di array $url[0] tersebut akan disimpan ke var $controller kemudian isi
$url[0] dihapus agar dapat digunakan menangkap nama controller lagi nanti.
if (file_exists('../app/controllers/' . $url[0] . '.php')){
$this->controller = $url[0];
unset($url[0]);
}
Praktek Penjelasan Kode…
require_once ('../app/controllers/' . $this->controller . '.php');
$this->controller = new $this->controller;
Perintah diatas akan memanggil dan menjalankan file controller (misal
[Link]) lalu membuat obyek dari kelas Home (file [Link] nanti akan
berisi kode pembuatan kelas bernama Home)
Praktek Penjelasan Kode…
//memeriksa method yang ada di url
if ( isset($url[1]) ){
if ( method_exists($this->controller, $url[1]) ){
$this->method = $url[1];
unset($url[1]);
}
}
Kode diatas akan memeriksa nama method didalam controller (index
didalam Home) dengan fungsi method_exists. Jika ada maka nama
method akan disimpan kedalam var $method. Lalu isi var $url[1]
dihapus
Praktek Penjelasan Kode…
//memeriksa paramater yang ada di url
if ( !empty($url)){
$this->params = array_values($url);
}
//Jalankan controller, method, dan parameter jika ada
call_user_func_array([$this->controller,$this->method],$this->params);
}
Kode diatas akan memeriksa parameter di url dengan fungsi empty(). Jika ada maka
akan disimpan ke var $params dengan fungsi array_values().
Sesudah itu dengan fungsi call_user_func_array akan dijalankan controller,
method, dan parameter.
Praktek
Setelah menambah kode dalam file [Link], selanjutnya membuat file
controller [Link] dan [Link]
<?php
class Home {
public function index($nama='Lalang Erawan',$pekerjaan='Dosen')
{
echo "Selamat datang, saya adalah $nama, pekerjaan saya $pekerjaan";
}
}
?>
<?php
class About{
public function index(){
echo "About/page";
}
}
?>
Praktek
Jalankan dengan url [Link]
Praktek
Jalankan dengan url [Link]