MVC设计 - 在CodeIgniter MVC Web应用程序项目中可以/应该/必须拥有多少个控制器?

Zee*_*han 13 php model-view-controller codeigniter

我正在使用CodeIgniter MVC框架在PHP中构建一个相对简单的Web应用程序.我以前开发过PHP应用程序,但从未以规范的方式开发.我已经习惯了MVC框架,但是有两个问题让我重新回到绘图板上,这会减慢开发速度.

  1. 是否有关于Web应用程序可以拥有多少个控制器的最佳实践?我有一个(相当大)的控制器用于我的应用程序,包括业务逻辑,表单提交逻辑等.虽然这有效,但我在争论是否有意义的是有单独的控制器,例如一个用于表单处理和提交,另一个用于用户管理(会话,登录,注册)等.然后,我再也不想过度工作了.我要挂起的部分是:控制器有一个"默认"索引函数,它在父URL上加载.所有业务逻辑都从这里开始(例如,表单提交,对数据执行某些操作等).我一直默认只是在开发过程中在同一控制器中创建新功能.它有效,但我的目标之一是学习最佳实践,有些东西告诉我,我可能会以错误的方式解决这个问题.

  2. 模型应用于数据库读/写函数,还是可以在其中放置"辅助"函数,例如generate_random_number,validate_login_credentials,login_session,logout_session等.

Hub*_*bro 4

(这是我的主观意见 - 它对我很好)

模型应该是整个应用程序的核心。这些模型应该处理所有业务逻辑和数据库管理。同时,控制器应该尽可能薄,只真正提供模型和视图之间的接口。

例如,在登录屏幕中,控制器应向用户提供登录视图。当用户输入信息时,控制器应处理输入验证并将输入转发给模型,模型应响应“成功”或“失败”。因此,控制器应该分别将用户重定向到仪表板,或将其发送回登录屏幕并显示错误消息。

总结一下:模型应该胖,控制器应该瘦。

  • 重要的是要记住:**这个答案是非常主观的**,脂肪控制器与脂肪模型是多年来的争论,我们不要将其呈现为好像一方或另一方是确定的标准。Codeigniter 实际上鼓励胖控制器,不同的框架是围绕不同的目标/想法构建的 (8认同)