Обязательно ли в этом выражении заключать в круглые скобки весь тернарный оператор?

Например, в следующем утверждении

$class = (  is_array($tagClasses) ? 'class="'.implode(" ",$tagClasses).'"' : ''  );

крайние круглые скобки предназначены только для удобства чтения или у них действительно есть какая-то другая цель?

Я думаю, что это только для удобочитаемости и эстетики кода, если у вас нет других вещей, происходящих в том же операторе, в котором вы должны отделить эту часть оператора и указать, что выполняется первым.

Но я никогда не видел такого утверждения без закрывающей скобки и думал об этом довольно давно. Поэтому этот вопрос.


person Solace    schedule 22.05.2015    source источник
comment
это для удобочитаемости.   -  person Anant Kumar Singh    schedule 22.05.2015
comment
Возможный дубликат stackoverflow.com/questions/26389123/   -  person Rikesh    schedule 22.05.2015
comment
Иногда у меня возникали проблемы, когда PHP неправильно интерпретировал порядок выполнения троичного оператора, особенно при объединении результата в выходную строку. Я обычно заключаю троичные выражения в круглые скобки, чтобы избежать этой проблемы.   -  person    schedule 22.05.2015
comment
@HoboSapiens Я также испытал это в более сложных утверждениях.   -  person Solace    schedule 22.05.2015
comment
@Rikesh Мой поиск пропустил это. Спасибо, что указали.   -  person Solace    schedule 22.05.2015


Ответы (1)


Первоначальным намерением была читабельность, я думаю, или, может быть, разработчик просто следовал стандарту кодирования. Хотя перенос и отступы помогут улучшить читаемость намного больше, чем добавление ненужных скобок. Например, вот так:

$class = is_array($tagClasses)
    ? 'class="' . implode(" ", $tagClasses) . '"'
    : '';

Когда вы определенно хотите добавить () вокруг тернарного оператора, это когда вы вкладываете один в другой (что в любом случае нехорошо), или вы можете поместить операнды оператора между () ради удобочитаемости, если у вас есть сложные выражения там.

person emul    schedule 22.05.2015