PHP在检查存在性时抑制错误+;布尔值?
我有一个使用选项数组的PHP脚本:$opts[] $opts可以包含0个或多个键值对。所有值都是布尔值 在检查是否存在键,然后检查值是否为真时,我一直在执行以下操作:PHP在检查存在性时抑制错误+;布尔值?,php,coding-style,refactoring,Php,Coding Style,Refactoring,我有一个使用选项数组的PHP脚本:$opts[] $opts可以包含0个或多个键值对。所有值都是布尔值 在检查是否存在键,然后检查值是否为真时,我一直在执行以下操作: if(isset($opts['small']) && $opts['small']) $classes .= 'smallBtn'; 这是可行的,但我觉得有点冗长 经过思考,我提出了以下备选方案: if(@$opts['small']) $classes .= "smallBtn"; 这要小得多,但依赖于@e
if(isset($opts['small']) && $opts['small']) $classes .= 'smallBtn';
这是可行的,但我觉得有点冗长
经过思考,我提出了以下备选方案:
if(@$opts['small']) $classes .= "smallBtn";
这要小得多,但依赖于@error抑制
我的问题是,哪种方法更好
第一个是长篇大论,但在它所做的事情上是明确的
第二个较短,但可能被视为糟糕的编码实践
更新:
第三种选择,也是我认为最好的选择,是使用:
从手册中:
如果变量不存在,则不会生成警告。这意味着empty()本质上是与!isset($var)| |$var==false
就个人而言,我更喜欢第一种方法,即干净的代码指导原则和代码可读性
我不会抑制任何可能的错误。就个人而言,我更喜欢第一种方法,即干净的代码指南和代码可读性
我不会抑制任何可能的错误。就个人而言,我更喜欢第一种方法,即干净的代码指南和代码可读性
我不会抑制任何可能的错误。就个人而言,我更喜欢第一种方法,即干净的代码指南和代码可读性
如果可能的话,我不会抑制任何错误。使用@抑制错误通常是一件坏事,因为这会使调试变得非常困难。例如,假设您在变量名中输入了一个拼写错误(请注意双美元符号): 这将一直是错误的,不会抛出任何错误 如果您想缩短代码,可以使用函数,例如:
function optionIsTrue($opts, $key) {
return isset($opts[$key]) && $opts[$key] === true;
}
if (optionIsTrue($opts, "small")) {
$classes .= 'smallBtn';
}
使用@来抑制错误通常是一件坏事,因为这会使调试变得非常困难。例如,假设您在变量名中输入了一个拼写错误(请注意双美元符号): 这将一直是错误的,不会抛出任何错误 如果您想缩短代码,可以使用函数,例如:
function optionIsTrue($opts, $key) {
return isset($opts[$key]) && $opts[$key] === true;
}
if (optionIsTrue($opts, "small")) {
$classes .= 'smallBtn';
}
使用@来抑制错误通常是一件坏事,因为这会使调试变得非常困难。例如,假设您在变量名中输入了一个拼写错误(请注意双美元符号): 这将一直是错误的,不会抛出任何错误 如果您想缩短代码,可以使用函数,例如:
function optionIsTrue($opts, $key) {
return isset($opts[$key]) && $opts[$key] === true;
}
if (optionIsTrue($opts, "small")) {
$classes .= 'smallBtn';
}
使用@来抑制错误通常是一件坏事,因为这会使调试变得非常困难。例如,假设您在变量名中输入了一个拼写错误(请注意双美元符号): 这将一直是错误的,不会抛出任何错误 如果您想缩短代码,可以使用函数,例如:
function optionIsTrue($opts, $key) {
return isset($opts[$key]) && $opts[$key] === true;
}
if (optionIsTrue($opts, "small")) {
$classes .= 'smallBtn';
}
我做了一个评论,但你看不出区别,这里是这样的: 好吧,根据你应该简单地说,第一个是更好的方法,但是为了最好的实践,为了在看了之后最好地理解,请尝试阅读这一个:
if(isset($opts['small'])
&& $opts['small']
) {
$classes .= 'smallBtn';
}
据我所知,你永远不应该隐瞒错误我做了一个评论,但你看不到其中的区别,下面是: 好吧,根据你应该简单地说,第一个是更好的方法,但是为了最好的实践,为了在看了之后最好地理解,请尝试阅读这一个:
if(isset($opts['small'])
&& $opts['small']
) {
$classes .= 'smallBtn';
}
据我所知,你永远不应该隐瞒错误我做了一个评论,但你看不到其中的区别,下面是: 好吧,根据你应该简单地说,第一个是更好的方法,但是为了最好的实践,为了在看了之后最好地理解,请尝试阅读这一个:
if(isset($opts['small'])
&& $opts['small']
) {
$classes .= 'smallBtn';
}
据我所知,你永远不应该隐瞒错误我做了一个评论,但你看不到其中的区别,下面是: 好吧,根据你应该简单地说,第一个是更好的方法,但是为了最好的实践,为了在看了之后最好地理解,请尝试阅读这一个:
if(isset($opts['small'])
&& $opts['small']
) {
$classes .= 'smallBtn';
}
据我所知,您永远不应该抑制错误,正确的方法是进行冗长的检查,这样错误就不会发生。抑制错误会修复症状,但不会修复错误。以下摘录自您的问题,是正确答案:
if(isset($opts['small']) && $opts['small']) $classes .= 'smallBtn';
您希望使代码更短、更易于阅读,这是正确的。但是我已经看到很多PHP代码是由其他专家完成的,我在生产代码中看到的唯一的“@”错误抑制是我自己作为一个快速修复程序放在那里的。在受到同事的批评后,我立即进行了冗长的检查,这样错误就不会发生。正确的方法是进行冗长的检查,这样错误就不会发生。抑制错误会修复症状,但不会修复错误。以下摘录自您的问题,是正确答案:
if(isset($opts['small']) && $opts['small']) $classes .= 'smallBtn';
您希望使代码更短、更易于阅读,这是正确的。但是我已经看到很多PHP代码是由其他专家完成的,我在生产代码中看到的唯一的“@”错误抑制是我自己作为一个快速修复程序放在那里的。在受到同事的批评后,我立即进行了冗长的检查,这样错误就不会发生。正确的方法是进行冗长的检查,这样错误就不会发生。抑制错误会修复症状,但不会修复错误。以下摘录自您的问题,是正确答案:
if(isset($opts['small']) && $opts['small']) $classes .= 'smallBtn';
您希望使代码更短、更易于阅读,这是正确的。但是我已经看到很多PHP代码是由其他专家完成的,我在生产代码中看到的唯一的“@”错误抑制是我自己作为一个快速修复程序放在那里的。在受到同事的批评后,我立即进行了冗长的检查,这样错误就不会发生。正确的方法是