Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在PHP错误抑制”的情况@&引用;真的有必要吗?_Php - Fatal编程技术网

是否存在PHP错误抑制”的情况@&引用;真的有必要吗?

是否存在PHP错误抑制”的情况@&引用;真的有必要吗?,php,Php,在PHP中,可以通过在语句前使用@符号来抑制错误 例如: if (@$flag[$i]) { ... } 虽然我在很多地方看到过它的使用,但我从未见过真正必要的情况。由于错误抑制还没有从PHP中删除(甚至没有被弃用),我可以认为它真的很有用。有人能给我指出一个确实必要的情况吗?当您需要调用可能发出错误的函数,但您希望自己验证原因并根据自己的验证采取措施,避免代码中泄漏错误时,这可能会很有用。例如,在编写库时,这种情况很常见。基本上,当您明确地、真正地、真正地不关心某个操作是否产生错误时

在PHP中,可以通过在语句前使用
@
符号来抑制错误

例如:

if (@$flag[$i]) {
    ...
}

虽然我在很多地方看到过它的使用,但我从未见过真正必要的情况。由于错误抑制还没有从PHP中删除(甚至没有被弃用),我可以认为它真的很有用。有人能给我指出一个确实必要的情况吗?

当您需要调用可能发出错误的函数,但您希望自己验证原因并根据自己的验证采取措施,避免代码中泄漏错误时,这可能会很有用。例如,在编写库时,这种情况很常见。

基本上,当您明确地、真正地、真正地不关心某个操作是否产生错误时,这种情况非常有用。尽管堆栈溢出充满了问题,开发人员使用了错误抑制操作符,然后问他们的代码为什么不能工作。因此,如果你明确地、真的、真的不在乎某个操作是否会产生错误,那么问你自己是绝对值得的。我唯一看到它可能有用的时候,就是绕过对启用了严格警告的可选变量进行
isset
检查的需要。在大多数情况下,try/catch是更好的方法。try{fopen(…);}如果设置正确,将不会禁止显示警告。(顺便说一句,默认情况下,Laravel会这样做。)@ceejayoz设置错误处理程序对库来说可能是非常具有侵入性的。库不应覆盖以前定义的任何处理程序。当调用它的方法时,它可以在运行时设置自己的处理程序,但有必要在执行返回调用方之前恢复上一个处理程序。否则,库可能会导致使用它的用户出现意外行为。对于一个框架来说,定义一个错误处理程序是可以的(也是应该的),因为调用代码的是框架,而不是相反。