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

    +156.8

    1. 1
    2. 2
    3. 3
    if (ereg("[0-9]+")) $id = (int)$_GET['id'];
    elseif (ereg("[0-9\.]+"))  $id = (float)$_GET['id'];
    else $id = $_GET['id'];

    Не то, чтоб жуткий говнокод, но как-то глуповато.

    Запостил: pasha, 06 Апреля 2010

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

    • Алсо, 'ereg' is deprecated.

      P.S. А в чем фишка вызова функции с одним параметром — паттерном? Где искать?
      Ответить
    • Это мой косяк, писал по памяти, недописал, скопипастел.
      Правильно, конечно, так:
      if (ereg("[0-9]+", $_GET['id'])) $id = (int)$_GET['id'];
      elseif (ereg("[0-9\.]+", $_GET['id'])) $id = (float)$_GET['id'];
      else $id = $_GET['id'];
      Ответить
    • <?php
      
      $id = (isset($_GET['id'])) // <-- этого в оригинале не было, но надо же предусмотреть
        ? (
          is_numeric($_GET['id'])
            ? (
              false !== strpos($_GET['id'], '.')
                ? (float) $_GET['id']
                : (int) $_GET['id']
            )
            : $_GET['id']
        )
        : null;
      
      ?>
      Ответить
      • А вот это - образцовое говнищще. Сразу ясно, что автор хотел сказать, помимо знакомства с тернарным оператором.
        Ответить
    • Да уж. Как-то глупо.
      Автор кода не может определиться с типом переменной id.
      То ли это INT, то ли FLOAT.
      А если ни то, ни другое -- STRING.
      С типами данных все должно быть четко.
      Ответить
      • Более того, непонятен вообще смысл этого кода. Обычно такое используют для фильтрации значений, но тут и ее нет.
        Ответить
    • У кого как, а у меня id обычно int )
      Ответить
      • Да. Есть такая традиция.
        Ответить
      • У тебя $_GET['id'] всегда int ? Мы идем к вам !
        Ответить
        • 1) Я этого не утверждал, тем более в такой формулировке.
          2) Все поняли без помощи КО, что я имел в виду.

          Захотелось потроллить? Лучше иди в пост про таблицы vs блоки http://www.govnokod.ru/2942
          Ответить
    • традиция - стереотип и шаблон, который упрощает нам жизнь. правда его разрыв может вызвать неиллюзорный батхёрт...
      Ответить
      • — Извините меня-а! Извините меня-а! Я когда, в ноябре прошлого года, до 26 ноября сего года, не было ни-е-ди-но-го разрыва, ещё раз я вам говорю. Или я… Или вы не ферштейн, или вам надо по-китайски сказать как-то?

        :))
        Ответить
      • Иди на свой лурк, луркоёб.
        Ответить

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