0

我一直在寻找为什么我的一个 ZEND 插件有时会运行两次(取决于 URL)

请注意,我的插件具有 preDispatch 和 postDispatch 方法,当我调试代码时,它的工作方式如下:

MY_Plugin:preDispatch (echo $_SESSION['DBG'] has value)
MY_Plugin:postDispatch (unset($_SESSION['DBG']))

然后再一次

MY_Plugin:preDispatch (echo $_SESSION['DBG'] not exist)
MY_Plugin:postDispatch

这是引导代码的一部分

$_SESSION['DBG'] = 'value';
$MYrouter = new MY_Router_MyRouter();
$frontController->setRouter($MYrouter);
$frontController->registerPlugin(new MY_Plugin());

你有什么建议这是如何发生的,或者我该如何模拟它。

感谢您的任何建议

4

3 回答 3

2

感谢大家提供很多宝贵的提示。

现在看我的故事:)

首先,我关闭了显示异常(参数 False)。所以我将它们打开以查看异常通知。

$frontController->throwExceptions(true);

比我看到我没有上传控制器和视图文件。上传它们后,ZEND 开始正常工作。

很高兴知道在调试期间将此方向设置为 ON。你可能会节省几个小时。

于 2010-10-13T11:40:30.580 回答
0

调度程序循环很可能运行两次(控制器被调度两次)。可能的原因:

  • 使用action视图助手
  • 打电话_forward
  • 重定向器动作助手
  • 手动调用dispatch()
  • 调度循环中止并再次启动(例如,重置请求参数)

另外,看看这个ZF 流程图(来自php-professionals.com的热链接)

于 2010-10-12T18:13:13.497 回答
0

另一个原因可能是缺少 favicon.ico :-)

如果 Apache 找不到它,它会触发第二个请求。

于 2010-10-13T05:24:23.663 回答