Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 管理视图->;没有框架的MVC上的控制器交互?_Php_Model View Controller_Design Patterns - Fatal编程技术网

Php 管理视图->;没有框架的MVC上的控制器交互?

Php 管理视图->;没有框架的MVC上的控制器交互?,php,model-view-controller,design-patterns,Php,Model View Controller,Design Patterns,我很难理解MVC是如何在PHP上工作的。在基于Java和Swing的程序上,或者使用C#中的winforms,“我的视图”触发控制器或演示者订阅的事件,并作为响应执行操作。然而,PHP缺少事件。我会用la java实现它们,但当我不能启动一个方法作为对超链接点击的响应时,我无法理解如何实现MVC 到目前为止,我在控制器的start()方法中检查POST和GET变量,并以特定的方式进行响应。例如,如果未设置$\u POST,则显示用户注册视图。否则,使用POST变量注册用户 我知道一定有更好的方法

我很难理解MVC是如何在PHP上工作的。在基于Java和Swing的程序上,或者使用C#中的winforms,“我的视图”触发控制器或演示者订阅的事件,并作为响应执行操作。然而,PHP缺少事件。我会用la java实现它们,但当我不能启动一个方法作为对超链接点击的响应时,我无法理解如何实现MVC

到目前为止,我在控制器的start()方法中检查POST和GET变量,并以特定的方式进行响应。例如,如果未设置$\u POST,则显示用户注册视图。否则,使用POST变量注册用户

我知道一定有更好的方法,但我在网上找不到任何解释PHP上view->controller关系的东西

你是如何做到这一点的

当我不能将一种方法作为一种工具来使用时,我不理解如何实现MVC 对超链接单击的响应

在您的路由器中,您可以使用该功能,例如:

<?php 
if(file_exists($controller)){
    include($controller);
    $this->controller = new $this->controller($this);
    //check method exists within loaded controller
    if(method_exists($this->controller, $this->action)){
        $this->controller->{$this->action}($this);
    }
}
?>

请注意,web应用程序(即使在C#中)与桌面应用程序大不相同。当然,webforms试图模仿桌面方法,但这显然不适合web应用程序,因此asp.net mvc。php中也有MVC框架(CodeIgniter、Symfony等),所以请使用它们,但最重要的是要了解web是如何工作的,以及为什么视图上的单击事件令人讨厌。