哪些代码应该在MVC结构中去哪里

Ogu*_*gic 5 php model-view-controller frameworks design-patterns model

我的问题是在模型和控制器之间的某个地方.当我使用MVC只是为了crud(创建,读取,更新,删除)时,一切都很适合我.我为每个数据库表都有单独的模型.我从控制器访问这些模型,到crud他们.例如,在联系人应用程序中,我在控制器(联系人)中有动作(创建,读取,更新,删除)以使用模型(联系人)方法(创建,读取,更新,删除).

当我尝试做一些更复杂的事情时,问题就出现了.有一些复杂的过程,我不知道我应该把它们放在哪里.

  1. 例如,在注册用户进程时.我不能在用户模型中完成这个过程,因为我也必须使用其他模型(发送邮件,通过其他模型为用户创建其他记录),并通过其他模型进行大量复杂的验证.
  2. 例如,在一些复杂的搜索过程中,我必须访问许多模型(文章,视频,图像等)
  3. 或者,有时,我必须使用apis来决定接下来要做什么,或者使用哪种数据库模型来记录数据

那么在哪里可以完成这个复杂的过程.我不想在控制器中执行它们,因为有时我也应该在其他控制器中使用这些过程.而且我不想把这些过程放在模型中,因为我使用模型作为数据库访问层.可能我错了,我想知道.谢谢您的回答 .

tak*_*hin 1

对于简单的任务,我会编写动作助手(例如 sendNewsletter)。

对于复杂的任务,我会创建服务(例如电子邮件、身份验证等)。