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

foreach() :
endForeach;

for() :
endFor();

while() :
endWhile;

if :
elseif :
else :
endIf;

资源(源代码+mysql)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值