【发布时间】:2015-11-28 11:32:18
【问题描述】:
大家都说控制器是应用流,模型是业务逻辑,视图是输出。
我可以理解所有模板(电子邮件模板、网站模板、短信模板、ajax 的 JSON 等)都属于 View。此外,检查用户权限(例如在管理页面中)、路由请求等属于控制器。像保存/检索/删除数据库数据这样的动作属于模型。最后,ViewModel 是视图调用的类,用于从模型和虚拟机中获取数据,然后转到视图、模型和控制器旁边的文件夹。
但是我应该把 Autoloader、Configuration、SendMail、SendSms、ReadMail、ReadSms、Auth、Request、Hash、Encryption、Validator、SessionHandler、ErrorHandler、CacheHandler、Notification、Chat、DB Migration 等类放在哪里?
我正在寻找终极指南:如何检测 foo 类属于 M、V、C 或 VM,以及将其放在哪个文件夹/命名空间中?
附:我只是在寻找与技术无关的标准。无论 Laravel 或 ZF 或任何其他框架如何实现 MVC。
谢谢。
【问题讨论】:
-
MVC 是一种用户交互模型,并不意味着应用程序中的每个类都属于 MVC。
-
谢谢@dmitry,您是说这些类应该放在一个单独的文件夹/命名空间中,例如实用程序\Autoloader{},该实用程序与 M、V、C 和 VM 位于相同的命名空间级别/文件夹中?
-
我的意思是你可能有任何数量的其他代码实体,而不是你可以适应 MVC 的任何东西。例如,Autoloader - 它对 MVC 有什么作用?没什么,它加载类,这纯粹是与 MVC 架构本身无关的低级任务。您在问题中提供的大多数课程都是如此。它们完全可以进入单独的文件夹和命名空间,但不一定。特定的命名和文件布局选择取决于许多问题,但我的主要信息是:应用程序中的任何类都不是 MVC 设计的一部分。
标签: php asp.net-mvc model-view-controller separation-of-concerns