2

我对 PHP 代码嗅探器和三元运算符有疑问。我添加了检查运算符前后空格的规则

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

现在我在简短的 if 语句中有错误:

 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 规则后一切正常。

问候

4

2 回答 2

3

好的,谢谢您的帮助,但我找到了解决方案,@ roberto06,感谢链接 m8!

添加后

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

它工作完美:)

于 2017-05-31T08:07:08.547 回答
1

它只是说一切都应该在同一条线上。

顺便说一句,在您的情况下,更好的方法是:

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

return $value . ($this->get('router')->getContext()->getHttpPort() !== 80) ? (':'.$this->get('router')->getContext()->getHttpPort()) : '';
于 2017-05-31T07:58:41.947 回答