一个简单的php MVC留言本实例代码(必看篇)

2019-05-03 00:40:39丽君

看完这两个类之后你可能会发现这与以前我们写程序差不多,的确现在还闻不到MVC的味道,如果你不懂MVC,在这两个类的基础上你完全可以开始写你以前的程序了。例如要显示全部留言,只需要写入下代码:

PHP代码:

require_once('lib/DataAccess.php'); 
require_once('lib/Model.php'); 
$dao=& new DataAccess ('localhost','root','','test'); 
$model=& new Model($dao); 
$model->listNote(); 
while ($note=$model->getNote()) 
{ 
$output.="姓名:$note[name]
 留言:
 $note[content] 
 
"; 
} 
echo $output; 
?>

很亲切吧,呵呵。

有了这个“感情基础”你就不会对MVC望而生畏了,下面我们就要上今天的主菜了,那就是“Controller”闪亮登场!

先大体浏览一下主要结构,它包括一个Controller类以及派生出的三个子类(listController对应显示留言功能、postController对应发表留言功能以及deleteController对应删除留言功能)。

PHP代码:

//! Controller 
/** 
* 控制器将$_GET['action']中不同的参数(list、post、delete) 
* 对应于完成该功能控制的相应子类 
*/
class Controller { 
var $model; // Model 对象 
var $view; // View 对象 
//! 构造函数 
/** 
* 构造一个Model对象存储于成员变量$this->model; 
*/
function __construct (& $dao) { 
$this->model=& new Model($dao); 
} 
function getView() { //获取View函数 
//返回视图对象view 
//对应特定功能的Controller子类生成对应的View子类的对象 
//通过该函数返回给外部调用者 
return $this->view; 
} 
} 
//用于控制显示留言列表的子类 
class listController extends Controller{ //extends表示继承 
function __construct (& $dao) { 
parent::__construct($dao); //继承其父类的构造函数 
//该行的含义可以简单理解为: 
//将其父类的构造函数代码复制过来 
$this->view=& new listView($this->model); 
//创建相应的View子类的对象来完成显示 
//把model对象传给View子类供其获取数据 
} 
} 
//用于控制添加留言的子类 
class postController extends Controller{ 
function __construct (& $dao, $post) { 
parent::__construct($dao); 
$this->view=& new postView($this->model, $post); 
//$post的实参为$_POST数组 
//表单中的留言项目存储在该系统数组中 
} 
} 
//用于控制删除留言的子类 
class deleteController extends Controller{ 
function __construct (& $dao, $id) { 
parent::__construct($dao); 
$this->view=& new deleteView($this->model, $id); 
} 
} 
?>

大体浏览之后,你一定打算开始仔细研究它了吧,别急,为了心中有数,我们先从宏观着眼, 先看看总入口index.php是如何调用Controller的:

PHP代码:

php 
//!index.php 总入口 
/** 
* index.php的 调用形式为: 
* 显示所有留言:index.php?action=list 
* 添加留 言 :index.php?action=post 
* 删除留言 :index.php?action=delete& id=x 
*/
require_once('lib/DataAccess.php'); 
require_once('lib/Model.php'); 
require_once('lib/View.php'); 
require_once('lib/Controller.php'); 
//创建DataAccess对象(请根据你的需要修改参数值) 
$dao=& new DataAccess ('localhost','root','','test'); 
//根据$_GET["action"]取值的不同调用不同的控制器子类 
$action=$_GET["action"]; 
  
  
switch ( 
  
$action) 
{ 
case "post": 
$controller=& new postController($dao,$_POST); break; 
case "list": 
$controller=& new listController($dao); break; 
case "delete": 
$controller=& new deleteController($dao,$_GET["id"]); break; 
default: 
$controller=& new listController($dao); break; //默认为显示留言 
  
  
} 
  
$view=$controller->getView(); //获取视图对象 
$view->display(); //输出HTML 
?> 								 
			 
相关文章 大家在看