我见过@某些功能的使用,如下所示:
$fileHandle = @fopen($fileName, $writeAttributes);
Run Code Online (Sandbox Code Playgroud)
这个符号有什么用?
背景:假设我有以下显然不正确的PHP:
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
Run Code Online (Sandbox Code Playgroud)
为了使用array_pop,$ vtest显然应该是一个数组,而不是一个字符串.然而,当我运行此代码时,会显示警告.我不希望这样,我只是希望代码无声地失败.
问题:与其他语言相比,PHP try-catch是否有一些特殊之处导致这种情况无效?
免责声明: 仅供参考,确实有其他方法可以在PHP中处理这种情况,但这些都是不可取的.这里的目标是避免:
"签名"技巧:
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
Run Code Online (Sandbox Code Playgroud)
类型铸造:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));
Run Code Online (Sandbox Code Playgroud) 我最近切换到报告PHP Notices的新设置; 我的代码工作正常没有这些通知被修复,但我想知道是否有必要修复每一个并留下他们报告或只是忽略它们并关闭通知报告.
对此有何不同意见?是否有与通知相关的最佳做法?