2017-05-31 115 views
1

我有PHP代码嗅探器和三元运算符的问题。 我加了规则后检查空间和运营商之前PHP代码嗅探器中的三元运算符出错

<rule ref="Squiz.WhiteSpace.OperatorSpacing"/> 

,现在我有错误的,如果简短的发言:

37 | ERROR | [x] Expected 1 space before "?"; newline found 
38 | ERROR | [x] Expected 1 space before ":"; newline found 

我的代码如下所示:

return ($this->get('router')->getContext()->getHttpPort() == 80) 
    ? '//'.$this->get('router')->getContext()->getHost() 
    : '//'.$this->get('router')->getContext()->getHost().':'.$this->get('router')->getContext()->getHttpPort(); 

任何人都知道在哪里可以是问题吗?我可以粘贴整个规则集文件,但删除OperatorSpacing规则后,一切正常。

问候

+1

好后,错误似乎不言自明,该系统每个操作员之前应有一个空间,却发现一个换行符。将它们替换为单个空格,它应该可以工作。 – roberto06

+1

有关此功能的更多信息,请点击此处:https://github.com/squizlabs/PHP_CodeSniffer/issues/348 – roberto06

+0

Squiz有标准,您必须遵循 – RiggsFolly

回答

2

玉家伙,求助感谢,但我发现的解决方案,@ roberto06,感谢链接M8!

添加

<rule ref="Squiz.WhiteSpace.OperatorSpacing"> 
    <properties> 
     <property name="ignoreNewlines" value="true"/> 
    </properties> 
</rule> 

它的工作完美:)

+0

您能否将您的答案标记为已接受?所以我们都知道这个问题已经解决,谢谢 –

+1

@TomášVotruba完成:) – jager91

1

它只说所有东西都应该在同一行上。

顺便说一句,更好的东西,你的情况应该是:

$value = '//'.$this->get('router')->getContext()->getHost(); 

return $value . ($this->get('router')->getContext()->getHttpPort() !== 80) ? (':'.$this->get('router')->getContext()->getHttpPort()) : '';