ThinkPHP 数据层的疑惑

WBOY
풀어 주다: 2016-06-06 20:27:54
원래의
1029명이 탐색했습니다.

在看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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!