gpt4 book ai didi

codeigniter - 在MVC中,处理和解析数据的应该是Model还是Controller?

转载 作者:行者123 更新时间:2023-12-04 02:50:20 24 4
gpt4 key购买 nike

直到现在,在我的 MVC 应用程序中,我一直主要使用模型来访问数据库,很少使用其他内容。我一直将 Controller 视为操作的真正大脑。但是我不确定我是否一直在正确地使用 MVC 模型。

例如,假设有一个金融交易数据库(订单号、订单项目、金额、客户信息等)。现在,假设有一个函数可以处理 .csv 文件,并将其作为数组返回,插入到交易数据库中。

我已将我的 .csv 解析函数放在我的 Controller 中,然后 Controller 将解析的信息传递给要插入的模型中的函数。但是,严格来说,.csv解析函数是否应该包含在模型中呢?

编辑:为了清楚起见,我特别使用了 CodeIgniter,但是这个问题通常与 MVC 结构有关。

最佳答案

互联网上充斥着关于什么是真实 MVC 的讨论。这个答案是从 MVC 的 CodeIgniter (CI) 实现的角度来看的。 Read the official line here.

正如它在链接页面上所说的“CodeIgniter 对 MVC 有一个相当宽松的方法......”。 IMO,这意味着没有任何真正错误的做事方式。也就是说,MVC 模式是实现关注点分离 (SoC)(定义 here )的一种很好的方式。 CI 将允许您遵循 MVC 模式,同时,正如链接的文档页面所说,“...使您能够以对您来说最有意义的方式工作。”

模型不必局限于数据库功能。 (尽管如果这对您有意义,那么一定要这样做。)许多 CI 开发人员将各种“业务逻辑”放入模型中。通常这种逻辑可以很容易地驻留在自定义库中。我经常遇到“业务逻辑”如此微不足道的情况,将其放在 Controller 中非常有意义。所以,严格来说 - 严格来说真的没有。

在您的情况下,正如评论之一所暗示的那样,将 CSV 功能放入库(也称为服务)中可能是有意义的。这使得它易于在多个地方使用 - 无论是 Controller 还是模型。

最终,您希望让任何给定的代码块与手头的任务相关,并且仅与手头的任务相关。希望这可以通过保持代码干燥的方式来完成(D不要Repeat Y我们自己)。如何实现所需的最终结果由您决定。

可以决定术语模型、 View 和 Controller 的含义。

关于codeigniter - 在MVC中,处理和解析数据的应该是Model还是Controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com