PhpTagLib的MVC分层设计
来源:互联网 发布:司令部升级数据 编辑:程序博客网 时间:2024/04/28 08:29
PhpTagLib是模仿JSP中的TagLib, 它实现了界面视图跟业务逻辑处理分开,也就是支持开发MVC结构的系统. PhpTagLib主要是使用一些XML标签去调用系统功能/数据, PhpTagLib是通过编译页面,生成一个PHP程序, 再运行的, 所以在正常状态(非Debug状态)下运行效率很高. 下面是它的几个主要的有别于一般模板技术的特性:
- 采用XML标准的语法
- 组件化
- 数据流以取(get)方向流动
本文主要将讨论通过PhpTagLib设计出更好的MVC系统的分层结构.
下图是框架中几个主要模块在分层设计中的应用, 通过此图可以看到PhpTagLib是处在表示层中:
在讨论前, 说明一下实际开发中MVC的应用.
MVC: Module-View-Control, 这三部分在实际应用中Module和Control这两个主要是处理数据和业务逻辑的,有的结构中的解释是Control就是模板引擎或框架控制, 有的是业务处理, 不管哪种, Module和Control就统一称为业务层,View就称为表示层.
我们先看看一般模板技术的MVC结构应用, 一般模板的运行流程是这样的:
1. 运行业务数据处理代码
2. 给模板引擎添加数据, 如assign操作
3. 调用模板
4. 显示
这里业务层和表示层(模板文件)两个的依赖关系是这样的:
如下图:
业务层在运行时给模板引擎模板所需要的数据, 并且要知道要调用哪个模板文件.
表示层(模板文件)需要知道业务层给了哪些数据, 并显示.
也就是这个数据流是推(push), 由业务层推向表示层.
这里如果模板中需要显示什么数据, 就需要修改一下业务层的代码.
当然如果在业务层中把所有的数据都给的话, 那自己考虑一下后果.
而PhpTagLib在开发中MVC的结构应用, PhpTagLib的运行流程是:
1. 运行PhpTagLib页面(表示层)
2. 在页面中调用标签
3. 标签类业务数据
4. 显示
下面是关系图:
这时如果表示层页面中需要显示什么数据, 只要调用相应的标签就可以了, 不用在业务层中指定要显示什么, 而是由表示层自己决定, 主动去调用数据.
所以数据流就是拉(get)的流向.
其实有的模板技术也可以做到由模板页面去主动调用数据, 而不是只依赖业务层给的.
从分层结构来说, 合理的结构应该是上面是表示层, 下面是业务层, 而依赖关系是表示层调用业务层, 业务层并不依赖表示层, 从这里可以看出PhpTagLib能更好的实现这个构架结构.
而实际上, 如上面的分层图中所看到的, 在框架中PhpTagLib主要是关注表示层, 并不是很适合业务逻辑处理, 而业务逻辑处理在框架中建议使用Action模块, Action我将在另一篇文章中讨论.
- PhpTagLib的MVC分层设计
- 软件的MVC分层设计模式
- Java Spring MVC分层设计
- 【blade的UI设计】理解前端MVC与分层思想
- MVC中M的分层
- spring mvc的分层思想
- 移动App设计之分层架构+MVC
- 移动App设计之分层架构+MVC
- JSP开发中的MVC分层设计
- 分层设计的好处
- div的分层设计
- Vulkan的分层设计
- 【php】利用原生态的JavaScript Ajax为php进行MVC分层设计,兼容IE6
- MVC分层
- 代码设计分层的感想
- 常用的分层架构设计
- 游戏引擎的分层设计
- 说说分层设计的好处
- 如何判断你用的是左脑还是右脑!
- 意境
- Linux RPM 命令参数使用详解[介绍和应用]
- HashMap和Hashtable及HashSet的区别
- Asp.Net中TextBox获得焦点时,其文本全被选中。
- PhpTagLib的MVC分层设计
- 房子, 人
- 足球,拿点专业精神出来
- 姓氏的联想
- 软考冲刺2008 系统分析版 V1.0发布!
- 风, 大风
- 开张喽!!!
- [web开发] apache+mod_perl实现url rewrite
- PHP验证码