PHP之简单MVC

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之简单MVC_第1张图片

注意:
PHP逻辑最好与HTML展示分离出来
在HTML中嵌套PHP代码时候,仅仅将需要PHP处理的内容,在PHP便签中输出,其它的都在PHP便签外输出。便于后期更新
模板中使用流程控制结构,建议使用模板语法代替大括号语法,包括代码段

foreach() :
endForeach;

for() :
endFor();

while() :
endWhile;

if :
elseif :
else :
endIf;

资源(源代码+mysql)

你可能感兴趣的:(PHP,mvc)