php抛出致命错误,但应用程序继续

时间:2015-04-17 18:28:44

标签: php zend-framework2 fatal-error

我正在研究一个ZF2项目,我发现这真的很奇怪。

在视图开头的代码是:

<?php 
    $sl = $this->getHelperPluginManager()->getServiceLocator();
    $routeMatch = $sl->get('Application')->getMvcEvent()->getRouteMatch();
    var_dump(is_object($routeMatch));
    var_dump(method_exists($routeMatch, 'getMatchedRouteName'));
    $route = $routeMatch->getMatchedRouteName();
    var_dump($route);die;
?>

前两个var_dump打印true和最后一个var_dump打印一个字符串,因此应用程序清楚地达到了这一点。

无论如何,每次应用程序运行时,我都会在Apache错误日志中发现以下致命错误:

  

PHP致命错误:调用成员函数getMatchedRouteName()       在非对象上

为什么会这样?我怎么能避免这个?

1 个答案:

答案 0 :(得分:0)

很可能,每个人都在说实话!

我可以看到代码正常工作,因为它适用于特定的HTTP请求。

无论如何,加载网页还有一些其他内容的HTTP请求(css,images,...)。

缺少其中一个文件。

Apache配置为如果请求请求文件且文件不存在,则请求将转发到index.php,即转发到我的zf2应用程序。由于没有路由匹配请求,因此应用程序显示404消息。

Zf2的预配置方式是在404页面中也显示了layout.phtml(我的代码所在的位置)。它就是错误发生的地方。

我找@TimFountain的借口,因为他的建议是纠正,我最初驳回了它。