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 的借口,因为他的建议是更正,我最初不予理会。
我正在做一个 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 的借口,因为他的建议是更正,我最初不予理会。