Ошибка с троичным оператором в сниффере кода 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 все в порядке.

Привет

2 ответа

Решение

Хорошо, ребята, спасибо за помощь, но я нашел решение, @roberto06, спасибо за ссылку m8!

После добавления

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

работает отлично:)

Это только говорит, что все должно быть на одной линии.

Кстати, что-то лучше в вашем случае будет:

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

return $value . ($this->get('router')->getContext()->getHttpPort() !== 80) ? (':'.$this->get('router')->getContext()->getHttpPort()) : '';
Другие вопросы по тегам