什么时候在PHP中使用@符号?

时间:2017-07-01 17:44:57

标签: php error-handling suppress-warnings error-suppression

我想知道使用@ symbol in PHP来抑制表达式错误的用例是什么。

许多人出于好的理由不鼓励它,但我想知道什么时候它实际上可以帮助编写更清晰的代码。我遇到了以下示例,其中对象的验证在函数内部和外部完成。在函数内部进行的验证有时可能意味着您可以将代码保持在函数之外。

在函数外验证:

if (isset($object)) {
    a($object);
}

function a($object) {
}

使用@:

在函数内验证
a(@$object);

function a($object) {
    if (!isset($object)) {
        return false;
    }
}

@符号是否有任何好的用例?

I know what the @ symbol does, but not when to use it

2 个答案:

答案 0 :(得分:2)

@是一种让PHP声誉不好的东西 - 它允许你编写错误的代码。

我个人正在使用@进行unlink() - 如果进行代码审查,我可能仍会接受这种情况,但不会自己做。

答案 1 :(得分:1)

当您使用无法更改的代码(或应用程序)(如外部API或编码模块)时,您可以使用它,并且它可能会导致脚本崩溃(例如生成致命错误)。

但首先你必须处理这种情况 - 生成你自己的异常并为它创建可接受的捕获(没有脚本崩溃和页面上的PHP警告,但是为用户或管理员提供了合适的消息)。

因为否则调试变得非常困难。