php代码用mvc分层,PhpTagLib的MVC分层设计

PhpTagLib是模仿JSP TagLib的PHP库,用于实现MVC架构,强调界面与业务逻辑分离。不同于传统模板技术的数据推送,PhpTagLib采用拉取方式,允许表示层直接调用数据。在运行流程中,表示层先运行,通过标签调用业务数据,提高了运行效率。这种设计使数据流由表示层控制,降低了模板与业务层的耦合度,更好地符合MVC架构的理想分层。
摘要由CSDN通过智能技术生成

PhpTagLib是模仿JSP中的TagLib, 它实现了界面视图跟业务逻辑处理分开, 也就是支持开发MVC结构的系统. PhpTagLib主要是使用一些XML标签去调用系统功能/数据, PhpTagLib是通过编译页面, 生成一个PHP程序, 再运行的, 所以在正常状态(非Debug状态)下运行效率很高. 下面是它的几个主要的有别于一般模板技术的特性:

采用XML标准的语法

组件化

数据流以取(get)方向流动

本文主要将讨论通过PhpTagLib设计出更好的MVC系统的分层结构.

下图是框架中几个主要模块在分层设计中的应用, 通过此图可以看到PhpTagLib是处在表示层中:

0818b9ca8b590ca3270a3433284dd417.png

在讨论前, 说明一下实际开发中MVC的应用.

MVC: Module-View-Control, 这三部分在实际应用中Module和Control这两个主要是处理数据和业务逻辑的, 有的结构中的解释是Control就是模板引擎或框架控制, 有的是业务处理, 不管哪种, Module和Control就统一称为业务层, View就称为表示层.

我们先看看一般模板技术的MVC结构应用, 一般模板的运行流程是这样的:

1. 运行业务数据处理代码

2. 给模板引擎添加数据, 如assign操作

3. 调用模板

4. 显示

这里业务层和表示层(模板文件)两个的依赖关系是这样的:

如下图:

0818b9ca8b590ca3270a3433284dd417.png

业务层在运行时给模板引擎模板所需要的数据, 并且要知道要调用哪个模板文件.

表示层(模板文件)需要知道业务层给了哪些数据, 并显示.

也就是这个数据流是推(push), 由业务层推向表示层.

这里如果模板中需要显示什么数据, 就需要修改一下业务层的代码.

当然如果在业务层中把所有的数据都给的话, 那自己考虑一下后果.

而PhpTagLib在开发中MVC的结构应用, PhpTagLib的运行流程是:

1. 运行PhpTagLib页面(表示层)

2. 在页面中调用标签

3. 标签类业务数据

4. 显示

下面是关系图:

0818b9ca8b590ca3270a3433284dd417.png

这时如果表示层页面中需要显示什么数据, 只要调用相应的标签就可以了, 不用在业务层中指定要显示什么, 而是由表示层自己决定, 主动去调用数据.

所以数据流就是拉(get)的流向.

其实有的模板技术也可以做到由模板页面去主动调用数据, 而不是只依赖业务层给的.

从分层结构来说, 合理的结构应该是上面是表示层, 下面是业务层, 而依赖关系是表示层调用业务层, 业务层并不依赖表示层, 从这里可以看出PhpTagLib能更好的实现这个构架结构.

而实际上, 如上面的分层图中所看到的, 在框架中PhpTagLib主要是关注表示层, 并不是很适合业务逻辑处理, 而业务逻辑处理在框架中建议使用Action模块, Action我将在另一篇文章中讨论.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值