MVC:如何在主要操作之前/之后运行一些自定义依赖操作

时间:2014-02-11 14:12:13

标签: php model-view-controller front-controller

以下代码位于我的FrontController。 run方法应该调用属于给定url的控制器动作。例如,http://localhost/admin/index应指向AdminControllerindexAction

这已经有效,但是调用其他控制器操作的最佳方法是什么,例如用于构建我的站点导航或旁边框(不在站点的主要部分中)的操作和一些信息。每次请求都需要导航,因此实现这没有问题,但是当我必须调用一些取决于主要操作的操作时,如何构造它?

我的第一种方法是使用runBeforeMainControllerrunAfterMainController两种方法调用其他控制器操作。全局配置保存主控制器的信息,在主控制器调用之前或之后需要调用子控制器(操作)。

我的第二种方法是考虑一个钩子/事件系统。但我没有得到很好的理论解决方案。您对此方法有什么建议或建议吗?

// in FrontController
public function run() {
    $strController = static::getControllerNameFromUrl();
    $strAction = static::getActionNameFromUrl();
    // call actions before main controller
    $this->template->main = $this->callMainControllerAction($strController, $strAction);
    // call actions after main controller
}

1 个答案:

答案 0 :(得分:1)

我认为HMVC正是您所寻找的。 H代表分层。基本上你使用多个mvc构造。您的网站变得更加模块化,一个请求可能会导致不同的操作。

Afaik已经有一些PHP框架使用这种方法。