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 ...
随机推荐
- Linux下如何进行FTP安装与设置
1. 先用rpm -qa| grep vsftpd命令检查是否已经安装,如果ftp没有安装,使用yum -y install vsftpd 安装,(ubuntu 下使用apt-get instal ...
- javascript模式——Command
假设我们要做一个计算器程序 var calculator = { add: function( x, y ){ return x + y; }, sub: function( x, y ){ retu ...
- HTML——JAVASCRIPT——光棒效果
光棒效果:建立一个表格,鼠标放到哪一行,哪一行的颜色就改变,鼠标离开那一行,那一行的颜色就恢复到原来的颜色 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- sqlyog绿色破解版
http://pan.baidu.com/s/1mghyUrY 下载地址
- C#中的多线程-入门
概述与概念C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多 ...
- 5.7 cm server-agent 会出现无法启动
异常信息如下: 离线安装cloudera-scm-agent5.7的Unable to create the pidfile问题 在离线安装Cloudera Manager启动agent出现了如下异常 ...
- java web 之 BeanUtils.populate的作用
首先,它是在org.apache.commons.beanutils.BeanUtils包中的一个方法. 方法的作用:用来将一些 key-value 的值(例如 hashmap)映射到 bean 中的 ...
- BestCoder Round #75 1003 - King's Order
国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...
- [Linked List]Palindrome Linked List
Total Accepted: 29652 Total Submissions: 117516 Difficulty: Easy Given a singly linked list, determi ...
- The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. 异常
异常信息如下: The Struts dispatcher cannot be found. This is usually caused by using Struts tags without t ...