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

    +153

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    // строка 139
    $parts = explode('@',self::$callbacks[$pos]);
    $file = strtolower('app/controllers/'.$parts[0].'.php'); 
    
    //try to load and instantiate model     
    if(file_exists($file)){
        require $file;
    }
    
    //grab all parts based on a / separator 
    $parts = explode('/',self::$callbacks[$pos]); 
    
    //collect the last index of the array
    $last = end($parts);
    
    //grab the controller name and method call
    $segments = explode('@',$last); 
    
    //instanitate controller
    $controller = new $segments[0]();
    
    $params = count($matched);
    
    //call method and pass any extra parameters to the method
    switch ($params) {
        case '0':
            $controller->$segments[1]();
            break;
        case '1':
            $controller->$segments[1]($matched[0]);
            break;
        case '2':
            $controller->$segments[1]($matched[0],$matched[1]);
            break;
        case '3':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2]);
            break;
        case '4':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3]);
            break;
        case '5':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4]);
            break;
        case '6':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4],$matched[5]);
            break;
        case '7':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4],$matched[5],$matched[6]);
            break;
        case '8':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4],$matched[5],$matched[6],$matched[7]);
            break;
        case '9':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4],$matched[5],$matched[6],$matched[7],$matched[8]);
            break;
        case '10':
            $controller->$segments[1]($matched[0],$matched[1],$matched[2],$matched[3],$matched[4],$matched[5],$matched[6],$matched[7],$matched[8],$matched[9]);
            break;
    }
    // ...

    Вот так SimpleMVCFramework передает аргументы контролеру *facepalm*

    Запостил: volter9, 03 Июля 2014

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

    • Не говно, а широко используемая практика:

      http://govnokod.ru/15958
      http://govnokod.ru/15762
      http://govnokod.ru/11986
      http://govnokod.ru/9793
      http://govnokod.ru/9197
      http://govnokod.ru/3775
      http://govnokod.ru/1135

      Видимо, когда-то PHP не умело call_user_func_array(), либо он был до неюзабельности медленным, вот все так и писали. А потом оставили для обратной совместимости.
      Ответить
      • Извиняюсь, моя ошибка, там дальше следует else с:

        new \core\config();
        
        call_user_func_array(self::$callbacks[$pos], $matched);
        
        if (self::$halts) return;


        Мне интересно, а почему ссылки не кликабельные?
        Ответить
        • >Мне интересно, а почему ссылки не кликабельные?
          куки почисти )
          Ответить
        • > Мне интересно, а почему ссылки не кликабельные?
          Кликабельные ссылки только для платных подписчиков ГК. Оплатить абонентку можно кнопкой в профиле или по этой ссылке.
          Ответить
          • Ну и членский взнос в профсоюзе говнокодеров нужно оплатить. Это сюда
            Ответить
          • Нижняя часть аватарки bormand-а в HD. Качать бесплатно без СМС.
            Ответить
          • а у меня кликабельные ^^
            Ответить
            • У меня тоже. Но мы ведь вовремя оплачиваем членские взносы.
              Ответить
              • не, я по блату, нахаляву
                Ответить
                • cleaned
                  Ответить
                  • > В Js есть какой нибудь способ отловить клик мышкой?
                    Конечно есть, и клики и даже наведение мышки можно обработать.

                    Но можно вот так (я так и сделал) - рулон запускается сразу после загрузки странички и ищет регуляркой все http://че-то-там, оборачивая их в ссылки. Дальше это просто самые обычные ссылки - можно кликать, можно открыть в фоне, можно скопировать линк и т.п.

                    > Но для этого придется делать ссылки синими.
                    Ну вот из-за того, что не все умеют оформлять ссылки синим, пришлось делать так, как я описал выше.
                    Ответить
                    • cleaned
                      Ответить
                      • Отчего же нельзя? Вот он: https://github.com/bormand/govnokod-board

                        Конкретно этот момент:
                        https://github.com/bormand/govnokod-board/blob/master/board.user.js#L305
                        Ответить
                      • cleaned
                        Ответить
                        • > Ну, тогда писать целиком
                          Ага, у меня скрипт только такие детектит. Ибо писать ссылки без http - моветон. Да и из браузера они один фиг копируются вместе с http://
                          Ответить
                          • cleaned
                            Ответить
                            • > Раскрытие многочисленных минусов не может не сказаться на быстродействии
                              Почти не сказывается, проверено на вот этом треде: http://govnokod.ru/15641 как с выпиливанием нежелательных комментов, так и без ;)

                              Сортировка комментов в порядке написания, ради которой я и писал этот скрипт, напрягает проц на порядок сильнее, чем все эти очистки вместе взятые.
                              Ответить
                            • cleaned
                              Ответить
                            • > топить пост целиком либо заминусовать его по самое не балуй
                              а у нас сток есть

                              > отрицательное впечатление будет обеспечено
                              Только для новых пользователей. Старые установят скрипты/будут грузить голый html/напишут микросервер.
                              Спойлеры раскрываются установкой нужного CSS, что гораздо гуляния по нодам как у Борманда (но ведь у Борманда и сейчас не тормозит!):
                              var s = document.createElement('style');
                              s.innerHTML = "span.hidden-text { display: none; } div.entry-comment-hidden span.comment-text { display: block; }";
                              document.head.appendChild(s);

                              А теперь поедставим, что маленький прокси сервер будет парсить и изменять CSS с ГК (скорее всего, это будет работать быстрее, чем перерисовка страницы под действием скриптов). Страница сразу будет рендериться как надо.
                              Любые шалости пользователей решаются радикально на уровне CSS и на JS с возможностью тонкой настройки.

                              > А я отвечу: это воспитательная мера, надо сказать, очень эффективная.
                              > минусов почти нет, все они по делу.
                              > Нет ни вайпа ни багров
                              А что, собственно, кроме багров изменилось? Минусов и раньше почти не было, и раньше по делу были.
                              И как удалось искоренить багры? Я ещё могу поверить, что некоторые убрали из автоминусаторов Ваши учётки, это вполне реально, кому-то могли надоесть минусы. Но багры, багры-то как ушли? Скрытые комментарии мешали им писать про новые багры?

                              Вопрос о баграх меня действительно интересует. Что с ними стало? Полезно было бы услышать мнения читающих этот комментарий.
                              Ответить
                              • Какой багор )))
                                Ответить
                              • Баграм надоело.

                                Чувак считает, что он занят благородным делом. Это греет его душу. Не уверен, возможно замещение неудолетвореных социальных потребностей.

                                Лечение - найти бабу и ебать пока тошнить не начнет.
                                А вообще - искать настоящую причину этого выставочного благородства.

                                Лечение нужно всем людям. Я постоянно практикую самолечение. Это нормально
                                Ответить
                                • > Лечение - найти бабу и ебать пока тошнить не начнет.
                                  > Я постоянно практикую самолечение.
                                  Находишь себя и ебёшь пока тошнить не начнет?
                                  Ответить
                                  • На самом деле стараюсь детально распознать причину каждого моего действия.
                                    Ну и не вести себя как конченный Робеспьер (и все-таки поебывать баб а не мозг) )))
                                    Ответить
                                • cleaned
                                  Ответить
                                  • >>Это ненорма.

                                    Норма у всех своя.

                                    >>Дрочить ты вряд ли станешь, на тебя это не похоже.

                                    Все дрочат, а я - не такой. Kegdan в твоей голове не дрочит, а в реальной жизни дрочат все. А те кто скрывают - больше всех)

                                    >>Но и на казанову не тянешь

                                    Я типичный Робеспьер

                                    >> я стал другим. Это очень печально

                                    Жалеешь о прошлом? Изменения всегда идут только к лучшему.
                                    Ответить
                              • Мамка комп отобрала у багрогенератора. Или стертор сам перестал постить багры и выдает
                                это за достижение.
                                Ответить
                    • чет типа

                      s/https?:\/\/\S+/<a href="$0">$0</a>/g


                      ?
                      Ответить
                      • Примерно так, да. Там парой комментов ниже исходник есть.
                        Ответить
                        • Посмотрел. Ну у тебя распознание понавороченей.

                          Вопрос - почему |&

                          Это же вроде простой апмерсант

                          PS - с удивлением смотрю и понимаю, что понимаю код JQ. Видимо что то отложилось из курса вебпрограммирования
                          Ответить
                          • Потому что & в html экранируют как &amp;
                            Ответить
                            • Ну я имею в виду, что можно было просто к классу добавить ; и & и оно бы распозналось. Да и вообще мне кажется https?:\/\/S+ достаточно)
                              Ответить
                • Как-то нелогично, честно говоря. В целях безопасности всё должно быть наоборот.
                  Ответить
          • Очень тонко )
            Ответить

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