AI编程助手
AI免费问答

thinkphp - PHP框架中service层是干嘛的?

这层到底是干嘛的,看了下Thinkphp和symfony都有这个感念,但这两个框架的service让人理解起来好像完全两个不一样的东西。
我理解的symfony的service是各种第三类库,而thinkphp我理解的是他相当于每个c和m的中间层,每个控制都会对有应的serivce。真有点迷惑了,求大神给指点一下?

# PHP
怪我咯 怪我咯 2991 天前 1041 次浏览

全部回复(3) 我要回复

  • ringa_lee

    ringa_lee2017-04-10 15:41:20

    最近在做的东西用的刚好就是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也是一样,虽然现在没有怎么用到。

    SF首答吧,献丑了。

    以上

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:41:20

    这说明到目前为止,你接触的项目规模还很小,MVC 基本上符合需求,等你的项目规模或复杂度上去了,你自然会有 Serivce 层的这种需求。

    同 @老法海 说的

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:41:20

    Symfony2 叫 Service Container(服务容器),服务器容和 thinkphp 中的 service 是一种思想,但有又一些区别:

    thinkphp 中的一般有这几层:

    controller
    model
    view
    service
    ...

    Symfony2 中是这几层:

    controller
    entity
    repository
    view
    manager

    Symfony2 中的 Manager 不是必需的,基本上和 Thinkphp 中的 service 是一个东西,都是介于 controller 和 model (repository) 之间的东西,而服务容器又是建立在 manager 之上的一个 service。

    回复
    0
  • 取消 回复 发送