Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller)
MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna, dan bagian yang menjadi kontrol dalam sebuah aplikasi.
Konsep MVC adalah konsep pemisahan antara logic dengan tampilan dan database
Pengenalan Model View Controller
Di PHP, kita dapat mengimplementasikan konsep MVC dengan membangun sendiri sebuah framework MVC berbasis OOP
Selain kita bisa mengimplementasikan konsep MVC secara “from scratch”, terdapat banyak framework MVC yang siap digunakan dan relatif mudah dalam penggunaannya seperti, CodeIgniter, CakePHP, Zend Framework, Symfony dan lain - lain
Pengenalan Model View Controller
Pola MVC memiliki layer yang disebut dengan model yang merepresentasikan data yang digunakan oleh aplikasi sebagaimana proses bisnis yang diasosiasikan terhadapnya. Dengan memilahnya sebagai bagian terpisah, seperti penampungan data (basis data), persistence, serta proses manipulasinya.
Model
Layer ini mengandung keseluruhan detail dari implementasi user interface. Disini, komponen grafis menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi. Tidak ada layer lain yang berinteraksi dengan user, hanya view.
View
Terakhir, arsitektur MVC memiliki layer controller. Layer ini menyediakan detail alur program dan transisi layer, dan juga bertanggungjawab akan penampungan events yang dibuat oleh user dari view dan melakukan update terhadap komponen model menggunakan data yang dimasukkan oleh user.
Controller
MVC Code Structure
Sebagai contoh sederhana dalam slide ini akan digunakan model statis atau model yang tidak menggunakan data dari database
<?php
class Book {
public $title;
public $author;
public $description;
public function __construct($title, $author, $description)
{
$this->title = $title;
$this->author = $author;
$this->description = $description;
}
}
?>
model/Book.php
<?php
include_once("model/Book.php");
class Model {
public function getBookList()
{
// here goes some hardcoded values to simulate the database
return array(
"Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classic book."),
"Moonwalker" => new Book("Moonwalker", "J. Walker", ""),
"PHP for Dummies" => new Book("PHP for Dummies", "Some Smart Guy", "")
);
}
model/Model.php
public function getBook($title)
{
// we use the previous function to get all the books
// and then we return the requested one.
// in a real life scenario this will be done through a database select command
$allBooks = $this->getBookList();
return $allBooks[$title];
}
}
?>
model/Model.php
<html>
<head></head>
<body>
<?php
echo 'Title:' . $book->title . '<br/>';
echo 'Author:'.$book->author . '<br/>';
echo 'Description:' . $book->description . '<br/>';
?>
</body>
</html>
view/viewbook.php
<html>
<head></head>
<body>
<table>
<tbody>
<tr><td>Title</td><td>Author</td><td>Description</td></tr>
</tbody>
<?php
foreach ($books as $book){echo '<tr><td><a href="index.php?book=' .
$book->title . '">' . $book->title . '</a></td><td>' .
$book->author . '</td><td>' .$book->description . '</td></tr>';
}
?>
</table>
</body>
</html>
view/booklist.php
<?php
include_once("model/Model.php");
class Controller {
public $model;
public function __construct()
{
$this->model = new
Model();
}
controller/Controller.php
public function invoke()
{
if (!isset($_GET['book']))
{
// no special book is requested, we'll show a list of all available books
$books = $this->model->getBookList();
include 'view/booklist.php';
}
else
{
// show the requested book
$book = $this->model->getBook($_GET['book']);
include 'view/viewbook.php';
}
}
}
?>
controller/Controller.php
<?php
// All interaction goes through
the index and is forwarded
// directly to the controller
include_once("controller/Controlle
r.php");
$controller = new Controller();
$controller->invoke();
?>
index.php
Top Related