我和几个朋友在一个网站上工作,最近,用户抱怨一个相当重要的功能除了返回一个空白页面之外什么都不做。这只发生在某些用户身上,而其他用户则可以很好地使用它。
我查阅了调试输出,结果发现一个函数被声明了两次。一次进入该功能的主页(foo.php
),一个在被require_once
的文件中。 显然,我现在正走在修复它的正确道路上,但让我感到困惑的是,许多人在访问该页面时没有遇到这个问题。两个函数声明是相同的;这些尸体似乎已从一个文件复制+粘贴到另一个文件。这些函数声明都不是有条件的;它们都应该始终发生。
有没有人知道 PHP 能够处理我的错误并使页面无论如何都能工作的情况,尽管有这个致命的错误?
您的函数声明的类型是公共的,私有的或受保护的,因此您可能不会因运气而获得致命错误,因为据我所知,PHP不允许函数重新声明。
抱歉,PHP 永远无法忽略致命错误或函数重新声明,因为在这种情况下,PHP 会混淆要考虑哪些函数声明,是使用旧声明还是新声明。
-
致命错误意味着,有些事情太不对劲了,以至于PHP对下一步该做什么感到困惑,因此你的工作就是把它做好。
-
抱歉,PHP 不会尝试找出两个或多个声明是否相同,然后忽略其中一个。如果必须这样做,已经很慢的PHP将变得更加缓慢。因此,为了社区的利益,您应该考虑编写正确的代码,而不是要求PHP解释器为您更正。