【问题标题】:How to name the layer between Controller and Model codeigniter MVC如何命名 Controller 和 Model codeigniter MVC 之间的层
【发布时间】:2011-01-25 02:27:49
【问题描述】:

我想限制模型只调用 db 而控制器将调用模型、库或助手。

我不想将逻辑放入控制器或模型中来为视图准备数据。 现在为视图准备所有数组的逻辑在控制器中完成。我正在创建一个库来分离这部分,因为有时我觉得它使控制器过载

因此,我想创建一个库类并让控制器构建视图数据,然后再将其扔到视图中。它不完全是模板。

问题是我不知道如何命名它。有什么好的建议吗? 我在想 view_builder、ui_builder、ui_components?

干杯

【问题讨论】:

    标签: model-view-controller codeigniter


    【解决方案1】:

    这是我对应用进行分层的方式:

    1. 查看
    2. 控制器
    3. 服务
    4. 坚持

    View 可以是桌面或浏览器,也可以是基于移动设备的。

    控制器与视图紧密绑定。它负责验证输入并将其绑定到模型对象,调用服务来实现用例,并将响应路由到下一个视图。

    服务满足用例。他们了解工作单元、拥有事务并管理与数据库等资源的连接。它们与模型对象、其他服务和持久性对象一起工作。它们是基于接口的对象,但可以远程或作为 Web 服务公开 - RPC-XML、SOAP、REST 或其他。

    持久性是另一个基于接口的对象。实现可以是关系型或 NoSQL;重要的是接口表达了模型对象的 CRUD 操作。如果您使用泛型,则可以编写一个适用于所有人的接口。

    我不会让模型对象自己持久化。我知道“贫血领域模型”是贬义词,但我认为更令人兴奋的行为应该围绕业务目的,而不是 CRUD 操作。

    【讨论】:

      【解决方案2】:

      良好的设置。在将返回的数据数组传递给视图之前,我有时也会使用 CI 库来解决其扭结问题。我有时也只使用模型。

      考虑名字对你有好处——我认为你提到的所有名字都很好;您还可以考虑将您的库命名为 data_structure 或 array_to_object 之类的名称 - 或者更针对您自己的问题的名称,例如friend_map 或 tag_cloud。

      我的建议:选择一个名称,如果出现更具描述性的名称或您的库的功能演变成其他名称,请不要害怕更改它。查找+替换是您的朋友。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2015-05-14
        • 2011-08-04
        • 2015-09-21
        相关资源
        最近更新 更多