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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // Функция подключения файлов шаблонов -----------------------------------------------------------------
        function tpl_include($filepath, $title = '', $content = '') {
    
            global $lang, $lang_array;
            $tpl_body = str_replace("\n", '', file_get_contents($filepath));
            $tpl_body = preg_replace('#\{loop (.*?)\}(.*?)\{\/loop\}#i', "\nEOL;\nforeach (\\1 as \$var=>\$val) echo <<<EOL\n\\2\nEOL;\necho <<<EOL\n", $tpl_body);
            $tpl_body = preg_replace('#\{const (.*?)\}#i', "\nEOL;\necho \\1;\necho <<<EOL\n", $tpl_body);
            $to_eval = "echo <<<EOL\n".$tpl_body."\nEOL;\n";
            eval($to_eval);
    
        }
        // -----------------------------------------------------------------------------------------------------

    По следам http://govnokod.ru/5658.
    Шаблонизатор этот жив и кочует из проекта в проект.
    Можно ссылаться на переменные из массива $lang, где хранится локализация и на $title и $content. Вот так - {$title}.
    Можно ссылаться на любые константы. Например, {const ROOT_PATH}.
    Можно делать цикл {loop $array}{/loop}, где внутри доступны переменные {$var} и {$val}.
    Полностью избавляет от шорт-тегов, которые скоро уже и уберут из похапе.
    Работает лишь чуть медленнее include с шорт-тегами (0.8 против 1.2 на 10к прогонов) и, разумеется, быстрее Смарти.
    При необходимости в каком-то проекте в чем-то еще - можно легко добавить.
    В общем - изящное вонючее решение.

    Запостил: 7ion, 23 Июня 2011

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

    • > быстрее Смарти.
      Смарти медленное только первый раз, второй и раз и далее он берет сгенеренные темплейты на чистом пхп, и работает соответственно быстро.
      Ответить
      • Ок, тогда Смарти 0.8
        Разница все равно невелика.
        Ответить
        • В смарти еще есть много полезных плюшек, моя любимая elseforeach:)
          Ответить
    • >Полностью избавляет от шорт-тегов, которые скоро уже и уберут из похапе.
      Кто сказал, что уберут?
      Ответить
      • http://www.google.ru/search?rls=ru&q=PHP+6+deprecates+%22shor t+tags%22&ie=utf-8&oe=utf-8&channel=suggest
        Еще с 2008 года об этом говорят.
        Но правда так никто и не знает, уберут ли.
        Ответить
        • если чо, там первая ссылка - бложик с красноречивым названием maximum failure, остальные не столь яркие
          Ответить
          • Окай.
            Тогда из мануала:
            >Следует избегать использования коротких тегов при разработке приложений или библиотек, предназначенных для распространения или размещения на PHP-серверах, не находящихся под вашим контролем, так как короткие теги могут не поддерживаться на целевом сервере. Для создания переносимого, совместимого кода, не используйте короткие теги.
            Ответить
            • Вот так всегда. Добавят для удобства, потом плюются, но поддерживают для совместимости. А потом и не убрать.
              Разруха начинается в головах, проблема(ы) PHP - в его архитектуре, точнее, в отсутствии оной.
              Ответить
        • они по ходу забили на PHP 6, а пока допиливают 5
          Ответить
      • лучше бы они похапе убрали из шорт-тегов
        Ответить
    • показать все, что скрытоvanished
      Ответить

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