您的位置:首页 > 编程语言 > PHP开发

PHP之简单MVC

2016-03-18 16:16 776 查看
MVC思想是现在大多数语言都流行的项目架构思想,其中

m代表model(模型,项目中数据处理|业务逻辑处理单元),一张表一个模型

v代表view(视图,项目中结果展示的单元|模板文件),

c代表controller(控制器,项目中负责某个功能整体流程调度单元)。

MVC项目架构思想(项目中代码间的组织关系),不决定语法形式(OOP,面向过程),仅仅决定代码分工方式。

在网站请求服务中先访问controller,如需数据库数据就调用model进行数据请求和处理,model将数据返回给controller后再调用view生成完整html页面返回给浏览器。现流行的模板引擎是smarty,不过本文只是介绍mvc思想,不使用smarty。

特点如下:

浏览器仅仅与控制器C交互

模型M与视图V都被控制器C调用

模型M与视图V之间,不存在任何交互

模型类:

controller

模型的单例,如果在一个功能(控制器)中,如果使用某个表的多次操作,应该使用该表的一个模型即可。可以通过一个单例工厂实现,不使用三私一公,不方便多个模型类使用。

<?php

class Factory{
static protected $arr = array();
static public function newMod($mode_name){
if(!isset(Factory::$arr[$mode_name])){
$file = $mode_name.'.class.php';
require_once M_dir.$file;
Factory::$arr[$mode_name] = new $mode_name;
}
return Factory::$arr[$mode_name];
}
}

?>


<?php
require_once C_dir.'factory.class.php';

//   $match = new match_m();
$match = Factory::newMod('match_m');
$res = $match->match_list();
require_once V_dir.'match.html';
?>


model

基础模型类,对同一个功能模块进行封装继承,提高复用

<?php
require_once DIR.'/mysqldb.class.php';
class model{
protected $db;
public function __construct(){
$this->initDb();
}
public function initDb(){
$this->db = mysqldb::getInsance();
}
}

?>


<?php
require_once M_dir.'model.class.php';
class match_m extends model{
public function match_list(){
$sql = 'select m.m_id,t.t_name as t1,m.t1_score,a.t_name as t2,m.t2_score,m.m_time from  tch as m left join team as t on m.t1_id=t.t_id left join team as a on m.t2_id=a.t_id';
return $this->db->get_all($sql);
}
}
?>


view

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>match</title>
</head>
<body>

<table>
<tr>
<td>场次</td>
<td>主队</td>
<td>主比分</td>
<td>客比分</td>
<td>客队</td>
<td>时间</td>
</tr>
<?php foreach ($res as $key => $value):?>
<tr>
<td>
<?php echo $value['m_id'];?>
</td>
<td>
<?php echo $value['t1'];?>
</td>
<td>
<?php echo $value['t1_score'];?>
</td>
<td>
<?php echo $value['t2_score'];?>
</td>
<td>
<?php echo $value['t2'];?>
</td>
<td>
<?php echo date('Y-m-d H:i:s',$value['m_time']);?>
</td>
</tr>
<?php endforeach?>
</table>

</body>
</html>




注意:

PHP逻辑最好与HTML展示分离出来

在HTML中嵌套PHP代码时候,仅仅将需要PHP处理的内容,在PHP便签中输出,其它的都在PHP便签外输出。便于后期更新

模板中使用流程控制结构,建议使用模板语法代替大括号语法,包括代码段

foreach() :
endForeach;

for() :
endFor();

while() :
endWhile;

if :
elseif :
else :
endIf;


资源(源代码+mysql)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php mvc