Wee*_*Wee 5 php model-view-controller
我是PHP新手,已阅读有关MVC的内容.目前,我没有使用任何框架,并且想知道如何将数据从控制器推送到视图.
背景:
我知道我通过_GET获取了DoWork.php中的值(来自htmlForm1.php).我的问题是如何在htmlForm2.php中获取值(来自DoWork.php)?
我曾想过使用会话,但这是唯一的解决方案吗?我不要求在htmlForm2.php之后这些数据是持久的
从技术上讲,视图可以直接请求模型数据.

将模型连接到视图的虚线正是该连接.
但是MVC面向Web与常见的MVC方法不同,因为它的每个请求执行.当谈到Web外的MVC时,该视图还有许多其他功能,而不仅仅是检索数据并打印它:视图可以直接连接到模型,在加载后请求数据,还可以在控制器中触发操作(在视图中的特定事件).在没有实际加载完整的新请求并获得全新响应的情况下,仅使用HTML几乎无法实现的事情(因此无法使用Javascript,因此无法使用).截至目前,应用程序的HTML部分仍然是一个愚蠢的模板,因为它被设计为请求的静态输出.
大多数PHP Web框架都将视图视为模板,我认为(恕我直言)这是该上下文的最佳和更清晰的方法.这样,如果您将视图作为响应发送,您可以通过简单的方式将变量发送到控制器:
$view = new View('view/myView.php');
$view->assign('a' => 'b');
Run Code Online (Sandbox Code Playgroud)
然后在视图类中简单地extract()包含实际视图文件之前分配的变量数组中的变量.
控制器应该推送到视图实例的唯一信息是用户输入(即使如此,也仅在极少数情况下)。
相反,视图应该通过服务从模型层请求信息。控制器主要负责根据用户输入更改模式层的状态。这也应该通过服务来完成。
为了实现这一点,控制器和视图必须能够访问相同的模型层。这通常是通过在这两种情况下注入某种类型来完成的ServiceFactory。然后,工厂确保每个服务仅实例化一次,而不使代码依赖于全局状态。
PS:这些视图不是愚蠢的模板。它们是负责应用程序中 UI 逻辑的类。当 MVC 在 Web 环境中使用时,它们会为用户创建响应。
PPS:模型不是类或对象。它是 MVC 中的两层之一。另一层是表示层,其中有控制器、视图和模板。模型层主要由三个主要组组成,每个组负责该层的一个特定方面:应用程序逻辑、域/业务逻辑和存储逻辑。
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |