我已经使用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说它无效?我写错了还是根本不允许三元组?
答案 0 :(得分:0)
嗅觉失败,而不是语法错误。您已定义了未遵循的规则。您需要更正代码或从规则集中删除规则。
内联IF语句将是您编写的三元选项。根据您的规则集,您需要写:
if (strlen($name) > 0)
{
$name = $name;
}
else
{
$name = 'nameless';
}
从规则中删除嗅探可能更好。
在编辑过的代码中,嗅探器正在抱怨
> 0?
应该是
> 0 ?
和
$name: 'nameless';
应该是
$name : 'nameless';