【问题标题】:Designing Libraries in CodeIgniter在 CodeIgniter 中设计库
【发布时间】:2010-12-30 16:01:42
【问题描述】:

我即将开始编写我的第一个大型 CodeIgniter 应用程序,但在开始之前,我想知道库的作用应该是什么。我是 MVC 的新手,但从我收集到的模型应该是数据结构的存储位置(业务逻辑)。那么除了控制器之外,库是编写应用程序逻辑的地方吗?在库中组合模型是个好主意吗?

例如,我将编写一个包含个人资料和消息传递的会员管理系统。 MVC + L(库)设置应该是什么样的? 2个模型(配置文件,消息)和一个结合它们的库?每个对象都有一个库?没有库,只有模型和控制器?

【问题讨论】:

    标签: php model-view-controller design-patterns codeigniter


    【解决方案1】:

    CodeIgniter 中的库只是 PHP 类。任何时候你通常会编写一个 PHP 类,在 CodeIgniter 中你会编写一个“库”。

    在大多数情况下,处理此类数据库调用或大量数据操作的数据应该放在模型中。显然,带有少量 PHP 的 HTML 放在 Views 中,用户交互属于控制器。

    您可能需要一个身份验证库,它是一个 PHP 类。但是,您可以查看几个可用的开源库,例如 Tank Auth 和 DX Auth。

    经验法则:传统的 PHP 库通常是一堆相关的函数,例如日期函数,但在 CodeIgniter 中将是一个助手。传统的 PHP 类/对象是 CodeIgnter 库。

    永远不要害怕阅读 system/helperssystem/libraries 文件夹中的源代码

    【讨论】:

    • 使用应用程序/而不是系统/ - 这是一个旧响应。
    【解决方案2】:

    我只建议模型和控制器。我认为库是用于可以重用的逻辑,而不是特定于应用程序的逻辑。而且我认为如果控制器和模型可以完成这项工作,那就去做吧。

    【讨论】:

    • 库可以包含任何东西的逻辑功能,而不仅仅是应用程序特定的东西。
    【解决方案3】:

    业务逻辑应该在控制器中,只有与数据库的交互应该在模型中。

    我问自己把东西放在哪里的问题非常简单。我查看模型中的“ifs”。那些ifs是用来检查数据的吗?如果他们正在检查与数据库的交互是否成功,则代码就是它所属的位置。如果它检查返回的数据值,它可能是在错误的地方(应该进入控制器)。

    正如 Zack 所说,带有少量 php 代码的 HTML 应该放在视图中。

    库更多地用于支持类。例如,我过去为特殊日历制作了一个库(类)。

    如果你甚至不需要一个类,把它放在一个助手中。 (例如,因为您只有一个特定的字符串操作函数,但想在不同的地方使用它)

    【讨论】:

      【解决方案4】:

      我同意 Dennis Decoene 的说法。但是经过一番思考,为什么 auth 库开发人员在他们的 auth 应用程序中创建库和帮助程序的组合,与 php 类性质相比,他们的库执行更多“不相关”的过程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 2011-08-05
        • 1970-01-01
        相关资源
        最近更新 更多