ThinkPHP 数据层的疑惑

WBOY
发布: 2016-06-06 20:27:54
原创
1069 人浏览过

在看TP的时候,看到这样一段描述:

数据层:Model/UserModel 用于定义数据相关的自动验证和自动完成和数据存取接口
逻辑层:Logic/UserLogic 用于定义用户相关的业务逻辑
服务层:Service/UserService 用于定义用户相关的服务接口等

这些层有什么区别,是么时候能用到,互相之间是相关联的还是独立的

回复内容:

在看TP的时候,看到这样一段描述:

数据层:Model/UserModel 用于定义数据相关的自动验证和自动完成和数据存取接口
逻辑层:Logic/UserLogic 用于定义用户相关的业务逻辑
服务层:Service/UserService 用于定义用户相关的服务接口等

这些层有什么区别,是么时候能用到,互相之间是相关联的还是独立的

直接贴我在SF第一个回答吧。 总结一句,就呢么回事儿~ 不要让这些乱七八糟的东西扰乱了视线。

------------ 原答案:
最近在做的东西用的刚好就是ThinkPHP 3.2.x 版本;至于symfony除了用到一些库之外 并不是很熟悉,所以就不献丑了。

按我的理解,TP中的Service可以理解为API, 并不是像LZ理解的C和M的中间层,M层是用到和数据库交互的;而Service中,则不限定于此,作用是为控制器或其他东西提供规范化的「服务」接口供使用(Service)。

举个例子,「User」「Department」两个Model,分别对应其对数据表的CURD操作。 「UserService」提供 「authroize」、「get_department」、「is_authenticated」等「服务接口」。 无非是把原先全部让Model做的事儿更加细致的分离出来,包括TP中的Logic也是一样,虽然现在没有怎么用到。

---------- 补几句:
Model 就是和数据库打交道的,CURD,更好的来说是仅read,通常来说要继承ViewModel。
Service 和 Logic 就是封装服务接口和业务逻辑的。 通常来说继承Model或者RelationModel 或者AdvModel, 或者啥也不继承,就是提供接口

eg:

<code>namespace Analytics\Service;


class AnalyticsService {

    public function get_date_range_by_input() {}

}</code>
登录后复制

举个栗子:
老板让产品经理开发一个图书馆管理系统,产品经理找各个程序员完成,每个程序员做不同的模块。
老板就是表现层,
产品经理就是服务层,
程序员就是逻辑层。
他们之间是有协议(劳工合同)互相连接的。
但是各自独立存在。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板