首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中,致命错误将在error_reporting(0)中显示

在PHP中,致命错误将在error_reporting(0)中显示
EN

Stack Overflow用户
提问于 2016-10-04 20:26:13
回答 2查看 88关注 0票数 0

我参加了一个前端职位的测试面试,公司甚至想知道我的php水平。我不太擅长php,所以这就是我在这里提出这个问题的原因。在一个问题中,我有一个名为ClassOne的类,其中有一个受保护的方法show()。这个类是由ClassTwo扩展的。ClassTwo被实例化,并在其上调用了show方法。在脚本的顶部,我调用了error_reporting(0)

代码语言:javascript
复制
error_reporting(0);
class ClassOne {
protected function show(){}
}
class ClassTwo extends ClassOne{

}
$obj2 = new ClassTwo(); 
$obj2->show();

我不得不说代码将显示什么,我说“什么都没有,因为显示是受保护的,而且error_reporting(0)不会让任何错误显示。”是这样的吗?

有人告诉我,这将产生一个致命的错误,即使在error_reporting(0)中也会显示。考试在纸上,所以我不知道正确的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-04 21:49:09

忘记类、受保护的方法和设计。都是误导。

代码语言:javascript
复制
<?php
error_reporting(0);
$obj = new Anything(); 
$obj->do();

有没有语法错误?不是的。PHP解析脚本并开始执行它。在第2行,所有错误报告都被关闭。在第3行,PHP尝试实例化Anything类。找不到类,这会导致致命错误。错误报告被关闭。没有报告错误。没什么可展示的。

代码语言:javascript
复制
<?php
error_reporting(0);
$obj = new Anything(); 
foo
$obj->do();

有没有语法错误?是的,在第4行,PHP不能解析脚本,这会导致"Parse错误:语法错误.“。是否启用错误报告?第2行与此无关,脚本从未执行。参考加载的配置是因为PHP加载得很好(例如,php.ini设置)。如果启用错误报告,则报告Parse error: syntax error。是否显示错误?这取决于环境和其他配置,如CLI中的display_errorslog_error。让我们假设一个直接使用display_errors=1的Apache环境,然后显示错误。

错误报告设置是关于报告错误的。这并不意味着它们将被显示出来。错误可能会被记录,而不会显示,例如,出于安全原因。尽管如此,请注意,如果禁用了错误报告,那么是否启用了它们并不重要,因为没有什么可显示的。

票数 1
EN

Stack Overflow用户

发布于 2016-10-04 20:43:22

E_ERROR错误级别(对应于致命错误)等于1,这意味着error_reporting(0);也会取消这些错误。

然而,error_reporting()函数可能是残废。这可能就是那个人不这么想的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39861171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档