计算机教程

当前位置:澳门娱乐场网址 > 计算机教程 > php源码建博客3--区分平台的MVC结构

php源码建博客3--区分平台的MVC结构

来源:http://www.ablakeforum.com 作者:澳门娱乐场网址 时间:2019-07-13 20:28

以一个公司为例,公司有市场部、管理层和工厂,M:—>工厂,V:—>视图,C:—>管理层,

  思路

  实现根据平台的不同进行不同的操作

  用户点击页面请求,随着url发送3个参数: p=平台&c=控制器&a=动作
入口文件接收get数据就可以知道: 平台, 控制器, 动作

C:Control  控制器  (也可以成为模块)

下载查看该项目源码: https://gitee.com/NewbiesYang/young_blog

如登录、注册模块来说,在C中就会有相应的login()和register()方法,通过C去调用M中的login()方法和register()方法,通过C来验证用户数据是否合法来反馈到V中用户登录、注册成功与否。

提出问题

  1. 项目中可以看到 include或require的文件路径很长,容易出错,也不便于使用 ==> 如何更加简单引入且不易出错

  2. 写一个类,就要到入口文件引入一次, 比较麻烦 ==> 如何实现自动加载类

  3. 随着类的引入增加,入口文件代码量会越来越大 ==> 如何 封装,简化入口文件

  4. 现在项目中任何一个目录,都可以随意访问 ==> 如何加强安全访问,限制目录的访问

下一步:常量使用,自动加载类实现,入口封装,限制目录访问

V: View   视图   (就是模板)


Php的加载都是通过一个统一的入口文件来加载文件资源,通过Url的方式,如index.php为单一入口文件,其他所有文件加载都需要与index.php为根,如http://www.lanshao.net/index.php?m=controller(控制器名)&a=action(动作名)

  1. 模型单例工厂
  2. 目录结构优化
  3. 区分平台(前台,后台....)

M(工厂)——————>C(管理层)——————>V(市场部)————————>客户

主要:

客户下订单————>V(市场部)——————>C(管理层)————————>M(工厂)

  思路

 多个平台:前后,后台
MVC结构分平台
C: Controllers/Home Controllers/Admin .....
V: Views/Home Views/Admin .....
M: 操作数据表一般模块共用
公共资源目录Public: Public/Home Public/Admin .....
 目录结构变化,所有载入类,视图的路径做相应变化 

 

目录结构优化


  测试

 1)模板准备:

      准备后台视图模板程序。可以自己写前端视图模板程序,也可以到网上下载别人写好的前端模板,如到 模板之家 选择所需求的 前台,后台模板

      寻找模板: www.mycodes.net

2) 将后台模板视图的静态资源文件(如 js, css,image)拷贝到 【Public/admin/】目录下

3) 创建后台首页控制器 【App/Controller/Admin/IndexController.class.php】

 1 <?php 2 /** 3  * IndexController控制器类 4  * 后台相关操作 5  * User: young 6  */ 7  8 class IndexController extends BaseController 9 {10     //展示后台首页11     public function index()12     {13         include 'App/View/Admin/Index/index.html';14     }15 }

4) 创建后台首页视图 【App/View/Admin/Index/index.html】

图片 1图片 2

  1 <!doctype html>  2 <html>  3 <head>  4     <meta charset="UTF-8">  5     <title>后台管理</title>  6     <link rel="stylesheet" type="text/css" href="./Public/Admin/css/common.css"/>  7     <link rel="stylesheet" type="text/css" href="./Public/Admin/css/main.css"/>  8     <script type="text/javascript" src="./Public/Admin/js/libs/modernizr.min.js"></script>  9     <script type="text/javascript" src="./Public//home/js/jquery1.42.min.js"></script> 10 </head> 11 <body> 12  13  14 <div class="topbar-wrap white"> 15     <div class="topbar-inner clearfix"> 16         <div class="topbar-logo-wrap clearfix"> 17             <h1 class="topbar-logo none"><a href="index.html" class="navbar-brand">后台管理</a></h1> 18             <ul class="navbar-list clearfix"> 19                 <li><a class="on" href="?p=back">首页</a></li> 20                 <li><a href="./" target="_blank">网站首页</a></li> 21             </ul> 22         </div> 23         <div class="top-info-wrap"> 24             <ul class="top-info-list clearfix"> 25                 <li><a href="">user1</a></li> 26                 <li><a href="?p=back&c=Index&a=ChangePswd">修改密码</a></li> 27                 <li><a href="?c=User&a=Logout">退出</a></li> 28             </ul> 29         </div> 30     </div> 31 </div> 32 <div class="container clearfix"> 33  34     <!--左侧菜单栏--> 35  36     <!--左侧菜单栏 begin--> 37     <div class="sidebar-wrap"> 38         <div class="sidebar-title"> 39             <h1>菜单</h1> 40         </div> 41         <div class="sidebar-content"> 42             <ul class="sidebar-list"> 43                 <li> 44                     <a href="#"><i class="icon-font">&#xe003;</i>常用操作</a> 45                     <ul class="sub-menu"> 46                         <li><a href="#"><i class="icon-font">&#xe008;</i>分类管理</a></li> 47                         <li><a href="#"><i class="icon-font">&#xe005;</i>博文管理</a></li> 48                         <li><a href="#"><i class="icon-font">&#xe012;</i>评论管理</a></li> 49                         <li><a href="#"><i class="icon-font">&#xe052;</i>友情链接</a></li> 50                     </ul> 51                 </li> 52                 <li> 53                     <a href="#"><i class="icon-font">&#xe018;</i>系统管理</a> 54                     <ul class="sub-menu"> 55                         <li><a href="#"><i class="icon-font">&#xe017;</i>系统设置</a></li> 56                         <li><a href="#"><i class="icon-font">&#xe046;</i>数据备份</a></li> 57                         <li><a href="#"><i class="icon-font">&#xe045;</i>数据还原</a></li> 58                     </ul> 59                 </li> 60             </ul> 61         </div> 62     </div> 63     <!--左侧菜单栏 begin--> 64  65     <!--右侧主操作区--> 66     <div class="main-wrap"> 67         <div class="crumb-wrap"> 68             <div class="crumb-list"> 69                 <i class="icon-font">&#xe06b;</i> 70                 欢迎使用博客后台管理系统。 71             </div> 72         </div> 73         <div class="result-wrap"> 74             <div class="result-title"> 75                 <h1>系统基本信息</h1> 76             </div> 77             <div class="result-content"> 78                 <ul class="sys-info-list"> 79                     <li> 80                         <label class="res-lab">操作系统</label>WINNT 81                     </li> 82                     <li> 83                         <label class="res-lab">运行环境</label>Apache/2.2.21  PHP/5.3.10 84                     </li> 85                     <li> 86                         <label class="res-lab">PHP运行方式</label>apache2handler 87                     </li> 88                     <li> 89                         <label class="res-lab">模板版本</label>v-0.1 90                     </li> 91                     <li> 92                         <label class="res-lab">上传附件限制</label>2M 93                     </li> 94                     <li> 95                         <label class="res-lab">北京时间</label> 96                         <?php echo date('Y年m月d日 H:i:s',time; ?> 97                     </li> 98                     <li> 99                         <label class="res-lab">服务器域名</label>localhost100                     </li>101                 </ul>102             </div>103         </div>104     </div>105     <!--/main-->106     <script >107         $(function(){108             $("#nowtime").css({color:'red'});109             $("#host").html(location.host);110             window.setInterval('ShowTime()',1000);111         });112         function ShowTime(){113             var t = new Date();114             var str = t.getFullYear()   '年';115             str  = t.getMonth() 1   '月';116             str  = t.getDate()-1   '日 ';117             str  = t.getHours()   ':';118             str  = t.getMinutes()   ':';119             str  = t.getSeconds()   '';120             $("#nowtime").html;121         }122     </script>123 </div>124 125 </body>126 </html>

后台首页视图

M: Model  模型  (简单来说就是对数据库的操作)

  效果及提交代码

图片 3提交保存代码

1 git add -A2 git commit -m "目录结构优化"

本文由澳门娱乐场网址发布于计算机教程,转载请注明出处:php源码建博客3--区分平台的MVC结构

关键词: