MVC设计-有多少控制器可以/应该/必须我在CodeIgniter MVC web应用程序项目


MVC Design - How many controllers can/should/must I have in a CodeIgniter MVC web app project?

我正在使用CodeIgniter MVC框架在PHP中构建一个相对简单的web应用程序。我以前开发过PHP应用程序,但从来没有以一种严格的方式。我已经习惯了MVC框架,但是有两个问题一直让我回到绘图板上,而且它正在减慢开发速度。

  1. 关于web应用程序可以拥有多少控制器是否有最佳实践?我有一个(相当大的)控制器为我的应用程序,包括业务逻辑,表单提交逻辑等。虽然这个工作,我在争论是否有意义有单独的控制器,例如一个用于表单处理和提交,另一个用于用户管理(会话,登录,注册),等等。不过,我也不想把它搞得太复杂。我挂起来的部分是:控制器有一个"默认"索引函数,在父URL加载。所有的业务逻辑都从这里开始(例如,表单提交、处理数据等)。随着开发的继续,我默认只在同一个控制器中创建新函数。它是有效的,但我的部分目标是学习最佳实践,有些东西告诉我,我可能用错了方法。

  2. 应该模型只有被用于数据库读/写函数,或者我可以把"助手"函数也在那里,例如generate_random_number, validate_login_credentials, login_session, logout_session等

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

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

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

总结:模型应该是胖的,控制器应该是瘦的。

控制器

这完全取决于应用程序的性质,但通常答案是NO您不应该有"一个相当大的控制器"。

你把一个应用程序拆得越小,它就越容易维护。

模型

直接来自Codeigniter文档

模型是设计用来处理数据库中的信息的PHP类。

答案是肯定的,你应该只在数据交互中使用模型。

我觉得你自己回答自己很有趣

"……或者我可以把'helper'函数也放在那里,…"

碰巧Codeigniter有一个处理这类功能的工具…

Codeigniter助手