PHP 代码嗅探器中的三元运算符错误

Error with ternary operator in PHP code sniffer

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

你好

它只是说所有内容都应该在同一行上。

顺便说一句,对你来说更好的是:

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

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

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

添加后

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

它运行完美:)