1. PHP / Говнокод #15933

    +147

    1. 1
    2. 2
    // Мне опять кажется, или скобки у !empty лишние?
    $id = (!empty($id)) ? $id : (int)$this->getState('message.id');

    http://ru2.php.net/manual/ru/language.operators.precedence.php

    Запостил: psycho-coder, 07 Мая 2014

    Комментарии (16) RSS

    • пхп развивает неуверенность в себе
      и вообще, жизнь - дерьмо, если ты связался с пхп
      Ответить
    • > Мне опять кажется, или скобки у !empty лишние?
      Всяко лишние. У тернарника во всех языках приоритет очень низкий. А у унарных операторов, таких как '!' - самый высокий.
      Ответить
      • > У тернарника во всех языках приоритет очень низкий.
        Но тут у тернарников особый пыхапешный приоритет. Проще и ленивей поставить побольше скобок.
        Ответить
        • Так они только между собой криво взаимодействуют. С остальными операторами у них вполне адекватный приоритет.
          Ответить
          • Вот и мне интересно, я обычно не ставлю скобки в такой ситуации. Ошибок или багов пока не встречал из-за этого.
            "Никогда такого не было, и вот опять."
            Ответить
            • Да и не будет. В табличке, которую ты кинул, под ? : стоят только += и его друзья, and/or/xor и запятая. И ты всяко ни один из них не будешь юзать внутри тернарника.

              А вот два тернарника в одном выражении в пыхе лучше не юзать... Или всегда оборачивать их в скобки... Там с ними вообще неитуитивная херня происходит.
              Ответить
              • Вложенные тернарники это вообще ад, таким не страдаю. А этот пример из доков джумлы, по написанию компонента.
                Ответить
          • >>Так они только между собой криво взаимодействуют.
            Как люр написал выше "пхп развивает неуверенность в себе"
            Если мне приходится добавить пару строк в какой-то пхп код раз в год то я лучше понаставлю лишних скобок и забуду, чем буду помнить как именно работают приоритеты в этом кошмаре.
            Ответить
            • А ведь там еще есть функции, которые могут вернуть 0 и false. И замечательный оператор ==, который пытается кастануть свои аргументы в числа. И даже empty(), который считает '0' и 0 пустыми (из-за этого на ГК нельзя запостить цветной нолик или коммент из одного нуля).
              Ответить

    Добавить комментарий