模型在MVC框架中应该有多粗粒度?

时间:2010-02-13 22:59:12

标签: php model-view-controller frameworks codeigniter

我一直在阅读之前提出的一些问题,而且我没有遇到一个以“黑白”为我回答问题的问题!所以,如果这是重复的,请道歉。这个问题可能类似于询问“一根绳子有多长”,但要忍受我!

对于registernation系统,我有一个用户模型,其功能如下:

  • ADD_USER
  • DELETE_USER
  • activate_user

上述用户模型处理一个表。 MySQL数据库中的users表。

你可以猜出每个功能的作用但这个足够粗糙吗?我的意思是我的模型应该包含更广泛的方法,例如:

  • add_record
  • delete_record
  • update_record

我在表格中传递了要删除,添加或更新的记录的唯一标识符?

我正在使用codeigniter,但我对如何在纯MVC框架中完成工作感兴趣。

如果这个问题太挑剔,我道歉。

全部谢谢

2 个答案:

答案 0 :(得分:10)

我不确定“粗略”是什么意思。

“我的模型应该包含更广泛的方法,例如:add_record,delete_record,update_record”

绝对不是。决不。这违背了建立模型的目的。

这种“通用”的东西就是数据库的用途。模型的要点是使通用数据库适应您的特定问题。

您的模型应该针对您的问题。

“具有以下功能的用户模型:add_user,delete_user,activate_user”这就是重点。您的模型反映了您的应用程序,问题域和解决方案。

你的模型应该能够 - 实际上 - 独立存在。您应该能够将模型包装在命令行应用程序或GUI应用程序或网页中。

答案 1 :(得分:0)

  

您可以猜出每个功能的作用   但这足够粗糙了。我的意思是   我的模型应该包含哪些方法   更广泛的如:

* add_record
* delete_record
* update_record
     

我在桌子上传递的是一个独特的   要删除的记录的标识符,   添加还是更新?

如果您只需要获取用户的信息并不一定会使用整个记录,那么您可以使用*_user函数,但仅将其包含在您的用户模型中

如果您需要获取整个记录而不仅仅是用户,那么您也可以使用*_record函数,但将其放在记录模型中 - 而不是在用户模型中。

这里要记住的是不要只在一个模型中包含所有这些功能。简单地说,您的用户和记录一样。