Php 正在使用@&引用;要抑制警告/通知,对吗?

Php 正在使用@&引用;要抑制警告/通知,对吗?,php,Php,我想,标题本身就解释了这个问题……) 使用@抑制PHP警告和通知是否正确? 例如,在:- if (isset($someArray['somekey'])) { $myVar = $someArray['somekey']; } 以及:- $myVar = @$someArray['somekey']; 哪条路对?为什么另一个是错的 使用@来抑制PHP警告和通知是否正确 不 哪条路对 第一种方法 为什么另一个是错的 这两种方法都将$myVar分配为NULL,但您不应试图抑制错误/警告

我想,标题本身就解释了这个问题……)

使用
@
抑制PHP警告和通知是否正确? 例如,在:-

if (isset($someArray['somekey'])) {
    $myVar = $someArray['somekey'];
}
以及:-

$myVar = @$someArray['somekey'];
哪条路对?为什么另一个是错的

使用@来抑制PHP警告和通知是否正确

不 哪条路对

第一种方法

为什么另一个是错的

这两种方法都将
$myVar
分配为
NULL
,但您不应试图抑制错误/警告


对您的评论的解释:

你不想知道是什么原因导致你的脚本在你期待其他东西的时候显示一些奇怪的输出吗

假设您正在运行此代码。。
echo$source=文件获取内容(“http://www.google.com");考虑如果<代码>谷歌.com >代码>,那么你会在你的脚本上得到一个通知,比如“主机名未找到”,通过阅读这个信息性的消息,你可以很好的知道你的代码是正确的,但是这个问题只与谷歌服务器有关。
假设您有
echo$source=@file\u get\u内容(“http://www.google.com");,将不会打印任何内容,但是您可能需要一个HTML源代码


您明白了吗?您不应该编写产生警告的代码,但是,在生产环境中运行时应该关闭警告和通知。
这是通过全局设置通过

完成的。不,您不应该使用
@
抑制错误。在开发时,您希望能够看到错误,并且在生产中,您的项目应该通过php.ini关闭错误报告,而不是通过

错误报告(E_ALL^(E_通知| E_警告))

生产级别的代码顶部,使用自己编写的自定义错误报告方法处理错误

但在开发级别,只需将
错误报告(E\u ALL^E\u NOTICE)
放入并阅读错误,即使在开发级别,通知也不重要

使用
error\u reporting
防止警告错误的优点之一是,即使在生产级别,如果出现问题,您也可以通过将
error\u reporting
值更改为
E\u ALL
进行调试,然后读取错误并解决问题


但是您不应该试图抑制错误/警告。
,但是为什么呢?谢谢,解释得很好。