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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    switch ($action)
    { 
      case 'error_php':
        showError('php'); #
        break;
      case 'error_short_tag':
        showError('tag'); #
        break;
      case 'index':
        showIndex(); #
        break;
      case 'license':
        showLicense(); #
        break;
      case 'choose':
        showChoose(); #
        break;
      case 'postchoose':
        showPostChoose(); #die($action."");
        break;
      case 'system':
        showSystem(); # после выбора цвета макета переходим сюда
        break;
      case 'build':
        showBuild(); # потом сюда
        break;
      case 'configure':
        showConfigure(); # если без структуры идём сюда
        break;
      case 'uninstall':
        showUninstall();
        break;
      case 'install':
        showInstall();
        break;
      case 'postinstall':
        showPostInstall();
        break;
      case 'vars':
        downloadConfigFile();
        break;
    }

    Структурное программирование от авторов инсталлятора NetCat.

    Запостил: telnet, 24 Мая 2010

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

    • к сожалению, мне так доводилось писать.
      а как это можно обойти? давайте примеры )
      Ответить
      • call_user_func_array
        Ответить
        • Пиздец. И раньше было понятно, что в PHP все не как у людей, но чтоб так через жопу, проктологи обзавидуются. Пиздец.
          Ответить
          • Не пиздец. Как иначе вызывать произвольную функцию в языке без first-class function / нормальных указателей?
            Ответить
            • чтобы вызвать функцию обязательно нужны функции высших порядков и указатели ? функционализм головного мозга
              Ответить
              • ПРОИЗВОЛЬНУЮ функцию, не известную во время компиляции. Любопытно посмотреть на решение не через жопу и без указателей.
                Ответить
                • Какая компиляция в PHP? C дуба рухнул?
                  Ответить
                  • PHP сначала компилирует скрипт в байт-код, затем интерпретирует этот байт-код. К.О.
                    Ответить
                • что за говнопроектирование где такое нужно?
                  Ответить
                  • Говнопроектированием оно становится тогда, когда им злоупотребляют. Это одна из тех вещей, когда перед употреблением надо хорошенько подумать над другими путями решения - но, по крайней мере, гораздо менее "криминальная", чем, к примеру, использование eval().
                    Ответить
                  • Говнопроектирование — это хардкод в сабже. При добавлении нового функционала придется править и этот кусок кода. Поэтому правильнее будет вызывать функцию динамически (через рефлекшены или call_user_func значения не имеет).
                    Ответить
                    • одинаковое говно и в посте, и с рефлекшенами.
                      нормальные события надо юзать, чтоб все было в компайле а не в рантайме, но похоже в php чем хуже тем "правильнее"
                      Ответить
                      • о чем это я php это даже не недоязык а всего то гепертекстовый препроцессор
                        но зато гонору over 9k
                        Ответить
                      • в пхп либо кодер ногу сломает, либо компилятор
                        Ответить
      • Инсталлятор выполнен в виде единого файла. Большинство функций, перечисленных выше, вызываются один-единственный раз, а значит, смысла выносить их в функции не было, можно было прямо в switch'е всё и прописать. а если нужна гибкость, то да, call_user_func_array(). А вместо свитча иметь массив: ключ - ожидаемое значение в $action, значение - что вызывать/инклудить.
        Ответить
      • $func ="show".$action;
        $func();
        Ответить
        • +
          только надо адекватно называть экшны и соотв. функции
          Ответить
    • NetCat добротное говно. Вы авторам сообщите, пусть почитают :)
      Ответить
    • это "продвинутая система роутинга" ))
      Ответить
    • Joomla 1.0.* так же была устроена.
      Ответить
    • Руслан как ни в чём не бывало отпустил парня и направился к подъезду, пока ничего не понимающий Виталий стоял на месте, сверля ему взглядом спину. Подойдя к двери подъезда, Руслан обернулся и вопросительно посмотрел на Вита. Тот, наконец, отмер, тряхнул головой и последовал за мужчиной. Они молча поднялись на второй этаж, и Вит отомкнул дверь ключом. Руслан зашёл следом.
      Ответить

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