"PHP" / Говнокод #2946 Ссылка на оригинал

0

  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 pasha, (Updated )

Комментарии (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.
    С типами данных все должно быть четко.
    Ответить
    • Более того, непонятен вообще смысл этого кода. Обычно такое используют для фильтрации значений, но тут и ее нет.
      Ответить
      • 1) Я этого не утверждал, тем более в такой формулировке.
        2) Все поняли без помощи КО, что я имел в виду.

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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8