从php的角度来看调用控制器的动作

问题描述

| 在PHP中,当加载页面时,在没有任何框架的情况下通过MVC模式工作时,再次进行CRUD处理时,文件应转到控制器。那么,如何将视图页面连接到控制器,因为视图页面就像HTML一样简单?控制器通过ActionView呈现视图页面,因此如何将视图页面链接到控制器以进行CRUD处理。     

解决方法

每个MVC请求都要经过相同的Controller-> Model-> View周期。从这个意义上讲,每个视图始终都是“联系”控制器,只是不在同一请求中。 用户打开URL
/posts/add
PostsController捕获一些数据并呈现视图 该视图由一个表单组成,可能显示来自控制器的一些数据 最终的HTML发送给用户 一个请求周期到此结束。浏览器显示HTML表单。提交表单时,新请求将发送到服务器。 表格过帐到
/posts/add
PostsController抓取数据,使用模型保存 如果一切正常,则控制器将呈现一个“谢谢”页面(或执行其他任何操作) 如果它不起作用,则控制器将再次呈现表单视图,并填充错误消息 最终的HTML发送给用户 这样再次完成了循环。在MVC周期内,视图从不与控制器对话。它只是输出用户看到的HTML。然后,用户向控制器发起新请求。     ,说您有以下几点: /m/User.class.php /v/newUser.php /c/UserController.class.php 我通常将其分为三层:一个类中的模型,一个给定业务对象的封装良好的高内聚性类。此类负责用户的对象模型,而控制器负责实现CRUD方法。这样就可以简单地将关注点分离,促进代码重用等。然后,您可以在所需的任何视图中插入控制器,例如说“ newUser.php \”以查看用户。 由于PHP是一种脚本语言,因此需要在使用之前导入依赖项。因此,查看依赖关系树,我通常使用\“ require_once \”将模型导入控制器,并将控制器导入视图。 User.class.php ----- 类用户{    私人$ username;
 User($newUsername) {
     $this->username = $newUsername;
 }
} userController.php ---------------(考虑以下方向“ app”位于PHP INCLUDE_PATH变量下) require_once(\“ app / m / User.class.php \”); 类UserController {
public static createUser($newUsername) {
    return new User($newUsername);
}
} newUser.php ----------(考虑以下\ app的方向位于PHP INCLUDE_PATH变量下)
require_once(\"app/c/UserController.class.php\");

$newUser = $UserController.createUser(\"username\");

echo \"<b>\" . $newUser;
除此之外,我使用像Propel这样的ORM系统为用户提供持久性。我在使用Propel和手动MVC的硕士期间实现了一个大型PHP系统。有关此结构的更完整示例,请访问http://java.net/projects/infinity-metrics/sources/svn/content/trunk/ app / classes / infinitymetrics / controller / UserManagementController.class.php作为控制器的示例。这是使用此控制器的视图示例:http://java.net/projects/infinity-metrics/sources/svn/content/trunk/app/user/student/signup-step1.php。