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

php throws fatal error but application continues

我正在做一个 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 Fatal Error: Call to a member function getMatchedRouteName() on a non-object

为什么会这样?我怎样才能避免这种情况?

很可能,大家说的都是实话!

我可以看到代码有效,因为它适用于特定的 HTTP 请求。

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

其中一个文件丢失。

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

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

我对@TimFountain 的借口,因为他的建议是更正,我最初不予理会。