【问题标题】:Managing View -> Controller interaction on MVC without frameworks?在没有框架的情况下在 MVC 上管理视图 - > 控制器交互?
【发布时间】:2012-11-06 09:59:09
【问题描述】:

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

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

我知道必须有更好的方法来做到这一点,但我在网上找不到任何解释 PHP 上的视图 -> 控制器关系的东西。

你是如何处理这个问题的?

【问题讨论】:

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

标签: php model-view-controller design-patterns


【解决方案1】:

当我无法触发方法时,我无法理解如何实现 MVC 对超链接点击的响应。

在您的路由器中,您可以使用method_exists() 函数,例如:

<?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);
    }
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2012-08-22
    • 2013-08-28
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多