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

    +27.5

    1. 1
    2. 2
    3. 3
    4. 4
    <?php
    if ("$payment_method" ==  "1") {
    
    ?>

    еще один шедевр, зачем так делать?

    Запостил: guest, 08 Января 2009

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

    • а ты сравни 2 кода:
      <?if($smth){?>
      <script type="text/javascript">
      alert('hello')
      </script>
      <?}?>

      <?
      if($smth){
       print("<script type=\"text/javascript\">\r\n".
       "alert('hello')\r\n".
       "</script>");
      }
      ?>

      какой красивше?
      Ответить
    • xengine:
      Говногость, причем тут это
      красивее будет не первый не второй а третий
      <?php if ($check) : ?>
      <strong>Hello</strong>
      <?php endif; ?>

      так как он понятней не программистам..
      но я думаю автор имел ввиду почему переменная в скобки запихнута
      Ответить
    • Приведение к строковому типу. То же самое, что написать:(string)$payment_method (мне такой вариант кажется симпатичнее). Зачем? Зависит от того, что находится в переменной $payment_method.

      Если, например, объект, то код эквивалентен $payment_method->__toString() == "1"

      Если число, то можно и не приводить.
      (string)1 == "1"
      1 == "1" // то же самое

      Если boolean - тоже можно не менять тип.
      (string)true == "1"
      true == "1" // то же самое

      А вот если массив, то другое дело.
      (string)array(1,2) != "1"
      array(1,2) != "1"
      array(1,2) == true
      Ответить
    • anmiles:
      Вопрос в том, нахрена в PHP приводить к стрингу переменную, которая потом еще и сравнивается с интом?

      единственный шанс этого кода быть не говном такой:
      if ("$payment_method" ===  "1") {

      но и он безнадёжно провален.
      Диагноз: говнокод! :)
      Ответить
    • Говногость #3:
      это же очевидно что там int ($payment_method=1;)

      нахрена и то и это приводить к string?

      Автор кода видимо незнает про типы данных вообще т.к далее по его коду
      наблюдается такое

      $db = mysql_pconnect("$dbhost", "$dbuser", "$dbpass") or die("Could not connect");
      Ответить
    • Keeper:
      Литеральные константы -- это зло.

      Что обозначает "1"? Каков его сакральный смысл?
      Ответить
    • Дkя сравнения строк нужно использовать strcmp и не выёбываться, господа.
      Ответить

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