关注MVC中的分离

时间:2015-09-02 19:53:24

标签: php asp.net-mvc model-view-controller separation-of-concerns

每个人都说控制器是应用程序流,模型是业务逻辑,视图是输出。

我可以理解所有模板(电子邮件模板,网站模板,SMS模板,ajax的JSON等)都属于View。检查用户权限(例如在管理页面中),路由请求等等也属于控制器。保存/检索/删除数据库数据等操作属于模型。最后,ViewModels是视图调用的类,用于从模型和VM获取数据,转到视图,模型和控制器旁边的文件夹。

但是我应该在哪里放置类Autoloader,Configuration,SendMail,SendSms,ReadMail,ReadSms,Auth,Request,Hash,Encryption,Validator,SessionHandler,ErrorHandler,CacheHandler,Notification,Chat,DB Migration以及其他一些类?

我正在寻找一个终极指南:如何检测foo类属于M,V,C或VM,以及在哪个文件夹/命名空间中放置它?

P.S。我只是在寻找技术独立的标准。无论Laravel或ZF或其他任何框架都实现了MVC。

感谢。

1 个答案:

答案 0 :(得分:2)

首先,如果不指定使用哪个框架,则无法解决此问题。虽然MVC在每个框架上几乎都是相同的概念,但框架实现有一定的差异。

假设您正在使用Laravel,在这种情况下,您的路由前置条件作为权限甚至是否已登录将在必须在routes.php文件中满足的中间件中实现。

Laravel将模型视为实施CRUD操作的地方,但是您缺少模型中可能没有的业务逻辑,也不想在控制器中使用它。在这种情况下,您可以创建一个单独的上下文,一个目录,您可以在其中存储具有将在多个控制器中使用的代码的类。

我想说,即使您完全了解MVC模式,您也需要决定并研究要使用的框架。将这两个部分组合在一起,将阐明在何处放置每一段代码。