PHP搭建简单暴力的mvc
对于一个web系统来说,我们使用mvc很必要, 给我们带来的是清晰的结构,易运维,易扩展,
mvc 我对其的理解应该叫mxvc, 多了一个x , 这个x代表什么,x可以理解为 relay,proxy,adapter 亦可,
先来看下面这张图

这是我们系统的mxvc结构图, 大概分成四个部分,
第一部分 php-libs
这是提供mvc框架的底层库,这块需要注意的是这是一个和业务无关的代码模块,里面还有数据库封装类等, 我把数据库也画在
这个图中了,可以看出数据库的重要性,其实所有的web系统都是围绕着数据库增删改查上面的封装
把数据库画出来还有个重要的目地是告诉大家对数据的操作要入口唯一, 在我系统里面只有DAO
下面封装的类可以访问到数据库,入口的唯一虽然有短处,但是利大于弊,切记
第二部分 controller
我们先来说控制层,最后再说mx,
从系统结构上来说controller是接入层,这里面的类是相互独立的,也就是说我们在controller类里面写的方法,理论上只能被类自己的其他方法使用,所以写的每个方法都要考虑好,是不是应该放在这里面还是放在mx里面,我们要衡量好,同样功能的方法最好不要出现第二次,这里面的代码要很简洁,最好不要有太多的业务逻辑的处理,全部交给后端的逻辑层去处理,
第三部分 view
这里面也就是前端,静态文件css js pic 还有template 记住这里面的静态文件是不走后端业务逻辑的,用户可以直接访问的,所以要设计好你的文件夹结构, 哪些可以暴露,哪些不可以暴露
第四部分 mx 即model +x ( proxy/adapter/relay )
毋庸置疑这是你系统最重要的部分,心脏,
简单说一下我们的设计, 这里面有两个公用的文件夹,Service和Utils 他们分别放公共的服务类和工具类,
比如你的异常封装类和错误码都可以放在Service里面,utils下面比如你的getClientIp这样的方法可以放在这个下面
这里面的DAO可以看到所有数据库的封装类在这个下面都可以找到,而且出处唯一,只有这里面可以找到,基本上一个表对应一个类即一个文件, 这里面的文件比较简单就是数据库的增删改查,保证如果外面想对这个表操作只有通过这个类才可以实现
下面就是X 因为我们一个前端的请求可能需要多个表的结果,或者一个封装好的数据接口可以提供给上游好几个controller共用,
这个时候X的价值就体现出来了, 保证代码的简洁,提高代码的复用全靠这个层的代码了,更多的细节可以自己慢慢总结,
只要我们有清晰的逻辑设计,职责清晰,分工明确的代码,兵来将挡水来土掩,即使有大的改动也不怕
链接提供上面架构的php-libs : https://github.com/Allenhaozi/crab 供参考
PHP搭建简单暴力的mvc的更多相关文章
- 简单暴力的TP5多主题方案
一个小项目,需要配置多套前端主题.解决的思路是根据域名加载不同的主题配置. 一.在应用目录 application 下创建 common 目录. 二.application/common 目录下创建 ...
- 【Spring】搭建最简单的Spring MVC项目
每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用 ...
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- maven/eclipse搭建ssm(spring+spring mvc+mybatis)
maven/eclipse搭建ssm(spring+spring mvc+mybatis) 前言 本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读<Maven 实 ...
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- 树莓派(Raspberry Pi)搭建简单的lamp服务
树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
随机推荐
- JS函数的四种调用模式
函数在js中具有四种身份,分别为函数.方法.构造函数.apply或call调用 函数调用 函数调用模式中this指全局对象(window) var f1 = function() { alert ...
- L10 安装网卡驱动
一.安装网卡驱动 1. 检查各种依赖包是否安装 2. 安装 加载网卡驱动: ip:
- PHP上传图片至阿里云
<?php header("Content-type: text/html; charset=utf-8"); header('Access-Control-Allow-Or ...
- oracle操作语句
Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); create index index_userid on tbl_detail(userid);如何找 ...
- js创建对象的方式 三种
1. 使用直接量创建1个对象: var aobj = { x : 10, y : function(){ console.log("aobj--> "+this.x); } ...
- 图的最短路径问题————树上奶牛(tree.cpp)
和往常一样,继续从题目引入 树上奶牛 (tree.cpp) [题目描述] 农夫John的奶牛不是住在地上而是住在树上的QWQ. 奶牛之间需要串门,不过在串门之前他们会向John询问距离的大小.可是Jo ...
- js,jQuery数组常用操作小结
一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...
- Android 测试工具集01
Appium是一个支持原生,混合和移动web apps的开源的跨平台测试框架工具. ANDROID依赖 Android SDK API >= 17 (Additional features re ...
- PHP中实现异步调用多线程程序代码
本文章详细的介绍了关于PHP中实现异步调用多线程方法,下面我们以给1000个用户发送一封推荐邮件,用户输入或者导入邮件账号了提交服务器执行发送来讲述. 比如现在有一个场景,给1000个用户发送一封推荐 ...
- mysql explain 命令简解
参考官方文档地址: http://dev.mysql.com/doc/refman/5.7/en/explain.html 为什么用explain . 如果你的页面返回结果很慢,你就需要使用expla ...