没有 "actions" 的控制器和页面? MVC

Controllers and pages without "actions"? MVC

据我了解,"MVC" 出现在网络之前,例如经常用于桌面软件。

如果我理解正确,控制器 在用户单击按钮时运行,这将触发操作。

但是如果我们谈论网页,场景就有点不同,假设用户点击了一个 link 然后它触发了一个动作。

但是,我的疑问来了,home 页面是 Controller 的一部分吗?

我的意思是,主页通常不是由网站内的用户操作执行的,只是 home,但注意到许多 PHP 框架使用Controller 用于 home,对吗?

另一个疑惑是在我的"home"我有几个项目,例如:

这些项目中的每一个都有不同的 Model,我可以调用多个 ModelView 进入控制器?

这些是正确的步骤吗?还是大部分php框架都不严格?

你完全正确,我理解这种困惑。

在纯 MVC 方法中,控制器仅侦听用户操作并相应地更新模型。然后模型通知视图(通过观察者设计模式),视图更新自身,从模型访问它需要的数据。 在 web 之前是这样的,在桌面应用中,Model 和 View 是 运行 并发的,Model 可以通知 View。控制器没有设置视图。

在这个纯 MVC 模型中,您提到的关于 主页 的示例确实不需要控制器。 View 只会渲染自己,通过 Model 访问它需要的数据。控制器非常薄,只听用户操作并更新模型。他们就是这么做的。

在网络中,这个模型是不可能的,因此有替代方法。 Model 不能像在纯模型中那样通知 View,因此流行的框架要求您做的是在 Controller 中设置 View。这就是为什么对于 主页 的示例,您 需要 控制器,因为您将在那里设置视图及其所需的所有数据。

但是,我个人一直在写另一种方法,其中控制器不设置允许您保留微型控制器的视图。你可以在这里阅读:A better OOP approach to building MVC applications

因此我认为 主页 根本不需要控制器操作。 View 应该只渲染自己并访问它需要渲染的数据。正如您所说,控制器的作用是处理用户操作并相应地更新模型。如果它做的不止于此,它可能违反了 SRP。 Controller 不应该设置 View,而是 the View should get its own data from the Model.