0% found this document useful (0 votes)
69 views14 pages

Model View Controller

The document describes the model-view-controller (MVC) pattern, which separates an application into three main components: the model, the view, and the controller. It has been widely adopted for web applications and there are many PHP frameworks that use MVC. The model manages the data, the view displays it, and the controller handles communication between them. The document provides PHP code examples to illustrate an MVC implementation with models, views, and a controller class to invoke actions and display output.

Uploaded by

gaslanyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
69 views14 pages

Model View Controller

The document describes the model-view-controller (MVC) pattern, which separates an application into three main components: the model, the view, and the controller. It has been widely adopted for web applications and there are many PHP frameworks that use MVC. The model manages the data, the view displays it, and the controller handles communication between them. The document provides PHP code examples to illustrate an MVC implementation with models, views, and a controller class to invoke actions and display output.

Uploaded by

gaslanyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

MODEL VIEW CONTROLLER

PHP & MVC

The model view controller pattern is the most used pattern for todays world web
applications
It has been used for the first time in Smalltalk and then adopted and popularized by
Java
At present there are more than a dozen PHP web frameworks based on MVC
pattern

PHP & MVC

The model is responsible to manage the data

The view (presentation) is responsible to display


the data provided by the model in a specific
format

The controller handles the model and view layers


to work together

PHP & MVC

PHP & MVC

MODEL/BOOK.PHP
<?php
class Book
public
public
public

{
$title;
$author;
$description;

public function __construct($title, $author,


$description)
{
$this->title = $title;
$this->author = $author;
$this->description = $description;
}
}
?>

MODEL/MODEL.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", "")
);
}
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];
}
}
?>

VIEW/VIEWBOOK.PHP

<html>
<head></head>
<body>
<?php
echo 'Title:' . $book->title . '<br/>';
echo 'Author:' . $book->author . '<br/>';
echo 'Description:' . $book->description . '<br/>';
?>
</body>
</html>

VIEW/BOOKLIST.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>

CONTROLLER/CONTROLLER.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';
}
}
}
?>

INDEX.PHP
<?php
// All interaction goes through the index and is
forwarded
// directly to the controller
include_once("controller/Controller.php");
$controller = new Controller();
$controller->invoke();
?>

PHP & MVC

You might also like