哪种方式会更快?错误抑制@ $ _ REQUEST ['x']或通过isset($ _ REQUEST ['x'])

时间:2013-12-24 02:05:14

标签: php error-handling isset

使用isset是一个额外的函数调用,但仍然是推荐的做法。 在下面的特定示例中,什么会更快?

我觉得第一个会更快。否则,有人可以解释为什么第二个会更快 - 如果是这样的话?

if (@$_REQUEST['x']=='1'):
    define ('X','1'); 
else:
    define ('X','0');
endif;

//or

if (isset($_REQUEST['x'])):
    if ($_REQUEST['x']=='1'):
        define ('X','1');
    else:
        define ('X','0');
    endif;
else:
    define ('X','0');
endif;

1 个答案:

答案 0 :(得分:1)

最佳实践要求避免使用抑制运算符,因此请使用isset()。如果你对微优化有足够的考虑来考虑差异,你应该知道PHP仍然处理被抑制的错误,即使它们没有被显示。理论上由@获得的任何优化都可能因错误处理而丢失。

最佳实践还规定了从外部来源获取输入的特殊性。我还建议选择$ _POST或$ _GET作为替代品。