In the MVC (Model-View-Controller) pattern, functionality is broken into three sections.
The Controller controlls all processing, including determing what if anything was input, determing what model and view functions to call, and handling passing data to and from the model and view functions.
The Model controlls all data access and manipulation, such as database io and any calculations.
The View controlls all output formatting, such as creating an html page.
While MVC works extremely well with Object Oriented Programming, it works equally well in procedural programming as this example shows.
. PHP Design Patterns . PHP Design Patterns Non OO MVC
PHP Design Patterns Non OO MVC
About the Non-OO MVC
Simple-Non-OO-MVC-Controller.php
//copyright Lawrence Truett and FluffyCat.com 2006, all rights reserved
include_once('Simple-Non-OO-MVC-Model.php');
include_once('Simple-Non-OO-MVC-View.php');
$page = getPage();
if ("TITLE" == $page) {
$title = getTitle();
showTitlePage($title);
} elseif ("AUTHOR" == $page) {
$author = getAuthor();
showAuthorPage($author);
}
function getPage() {
if (isset($_GET["page"])) {
$pageIn = $_GET["page"];
switch($pageIn) {
case "title":
$page = "TITLE";
break;
case "author":
$page = "AUTHOR";
break;
default:
$page = "TITLE";
break;
}
} else {
$page = "TITLE";
}
return $page;
}
download source, use right-click and "Save Target As..." to save with a .php extension.
Simple-Non-OO-MVC-Model.php
//copyright Lawrence Truett and FluffyCat.com 2006, all rights reserved
function getAuthor() {return 'Larry Truett';}
function getTitle() {return 'PHP for Cats';}
download source, use right-click and "Save Target As..." to save with a .php extension.
Simple-Non-OO-MVC-View.php
//copyright Lawrence Truett and FluffyCat.com 2006, all rights reserved
function showAuthorPage($authorIn) {
$page = htmlBegin() . 'AUTHOR: '.$authorIn.htmlEnd();
echo $page;
}
function showTitlePage($titleIn) {
$page = htmlBegin() . 'TITLE: '.$titleIn.htmlEnd();
echo $page;
}
//breaking up the quotes only so this example will display
function htmlBegin() {
return '<'.'HTML><'.'HEAD><'.'TITLE><'.'/TITLE><'.'/HEAD><'.'BODY>';
}
function htmlEnd() {
return '<'.'/BODY><'.'/HTML>';
}
download source, use right-click and "Save Target As..." to save with a .php extension.
Test the Non-MVC-Controller
test with no paramaters
test with a paramater of page=author
test with a paramater of page=title
test with a paramater of page=nonsense
test with a paramater of page=author
test with a paramater of page=title
test with a paramater of page=nonsense
References
| Sign In |
| to add your own comment |
| Comment by Larry Rate this Comment |
I'm sure this will cause MVC OO fans to wince, but some COBOL systems I worked on in the 1980s (which were designed in the 1970s) had an excellent MVC implementation. The controller module, often called the controller module, would generally begin by determining what was being done, call the appropriate database io modules, call calculation modules, and then lastly call the screen formatting modules. |