如何使PHP CodeSniffer标准PHPCS验证三元运算符?

时间:2014-01-16 21:23:51

标签: php operators codesniffer

我已经使用PHP_CodeSniffer几天但我仍然无法验证某些代码。当我使用三元运算符时,即使是非常简单的这样:

$name = (strlen($name) > 0) ? $name : 'nameless';

Code Sniffer说:

  

错误|不允许使用内联IF语句

但如果我使用三元编写无效代码,就像这样:

$name = strlen($name) > 0? $name: 'nameless';

Code Sniffer说“FOUND 4 ERRO(S)......”:

  

错误|不得将比较值赋给变量   
错误|内联速记IF语句需要围绕比较括号   
错误|不允许使用内联IF语句   
错误|在“?”之前预计有1个空格; 0发现   
错误|在“:”之前预计有1个空格; 0找到了

为什么它验证所有三元表达式,但是当我解决所有问题时,PHPCS说它无效?我写错了还是根本不允许三元组?

1 个答案:

答案 0 :(得分:0)

嗅觉失败,而不是语法错误。您已定义了未遵循的规则。您需要更正代码或从规则集中删除规则。

内联IF语句将是您编写的三元选项。根据您的规则集,您需要写:

if (strlen($name) > 0)
{
    $name = $name;
}
else
{
    $name = 'nameless';
}

从规则中删除嗅探可能更好。

在编辑过的代码中,嗅探器正在抱怨

> 0? 

应该是

> 0 ?

$name: 'nameless';

应该是

$name : 'nameless';