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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
function t($text, $parameters = null) {
        $lang = empty($_COOKIE['lang']) ? 'ru' : $_COOKIE['lang'];
        $result = !array_key_exists($text, Application_Model_Translate::$lang_package) || ($lang == 'ru') ? $text :
                Application_Model_Translate::$lang_package[$text][(int) ($lang == 'en')];
        if (isset($parameters)) {
                if (!is_array($parameters))
                        $parameters = array($parameters);
                foreach ($parameters as &$param)
                        $param = addslashes($param);
                eval('$result = sprintf($result, "'. implode('","', $parameters) . '");');
        }
        return $result;
}

Запостил: Groovy Groovy, (Updated )

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

  • > eval('$result = sprintf($result, "'. implode('","', $parameters) . '");');
    Автор явно не знал про call_user_func_array 🙂
    Ответить
            • не все, но многое... изначально ж захотели динамическую сишечку, ну и понеслась...
              Ответить
              • На гейдеве сегодня захотели интерпретируемые кресты. И даже нашли.
                Ответить
                  • cint

                    Но это каким уровнем упоротости нужно быть, чтобы искать интерпретатор крестов для своего движка.

                    Никак от лени учить новый язык.
                    Ответить
                    • Они ещё не знают, что в CLHEP есть классы для работы с матрицами.
                      Ответить
                    • > интерпретатор крестов
                      Очень важно, чтобы интерпретатор крестов был написан на крестах. Тогда можно запустить кресты в крестах в крестах в крестах...
                      Ответить
                        • Если интертесно, то тема:
                          http://www.gamedev.ru/flame/forum/?id=184799
                          Читал по диагонали, кода не нашел. Тема скушная, так что заходить не стоит. Как я понял автору лень изучать новый язык и он хочет запилить скрипты на крестах, но они долго компилируются и не имеют рефлексии, поэтому хочет взять интерпретатор.
                          Ответить
                            • ИЧСХ еще ни один "убийца" никого не убил. А все потому что настоящий хитман остается незамеченным.
                              Ответить
                          • это не просто крестоблядство ради крестоблядства, это еще и развращение малолетних программистов, за такое сажать надо
                            Ответить
                          • >Читал по диагонали, кода не нашел. Тема скушная, так что заходить не стоит. Как я понял автору лень изучать новый язык и он хочет запилить скрипты на крестах, но они долго компилируются и не имеют рефлексии, поэтому хочет взять интерпретатор.
                            cling уже сделали. Автор - слоупок
                            Ответить
                      • Ты скажи, можно ли на крестошалонах написать компил-таймовый компилятор крестов? Чтобы до конца УПОРОТЬСЯ .
                        Ответить
                        • > можно ли на крестошалонах написать компил-таймовый компилятор крестов
                          Конечно можно:
                          #include "кококомпилируемый_во_время_кокомпиляции _кококод.cpp"
                          Ответить
                          • Не, это не торкает нифига.
                            Чтобы
                            template <const char* Code> ...
                            Ответить
                            • Так низя. Строковые литералы в параметры шаблона не лезут, увы. В mpl это ограничение обошли через пачки символьных литералов.

                              Так то в mpl есть и рекурсия,и условия, и строки, и списки... И теоретически можно было бы запилить компилятор крестов... Но это все дико жрет память, из-за того что это по сути чисто функциональный язык, а сборщика мусора само-собой нету.

                              Короче в теории можно. А на практике у тебя не хватит памяти, терпения, и места на винте под вывод ошибок ко-ко-компиляции.
                              Ответить
                                • > это ограниченное говно
                                  Садись, двойка. Правильный вывод: текущие архитектуры - говно, т.к. не позволяют юзать бесконечный объем памяти, а поэтому не эквивалентны машине тьюринга. При бесконечной памяти все отлично работает 😉
                                  Ответить
                              • >> и места на винте под вывод ошибок ко-ко-компиляции
                                Ааа!
                                Надеюсь в /dev/null хватит?
                                Ответить
                            • std::integer_sequence<char, "k","o","-","k","o","-","k","o">

                              Хватит что бы записать иммутабильную машину тьюринга.
                              Ответить
                                • > 64
                                  Но можно еще вкладывать шаблон в параметр шаблона 🙂 Или там и глубину тоже зарезали где-нибудь в районе 64?
                                  Ответить
  • Application_Model_Translate::$lang_package[$text][(int) ($lang == 'en')];

    По-моему тоже замечательно. Ведь, строковой ключ в массиве - потеря производительности! Автор его умело сконвертировал в интеджер, обломав тем самым прожорливый ПХП-рантайм!
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8