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

    +173

    1. 1
    $karkas = tr(bgcolor("D9EDFB"), td(w("1%").style("").valign("top"),br()).td(valign("top"), hr(noshade().size(1).color("D9EDFB")).table(cs(0).cp(10).border(0), tr(no(), td(no(), 'текст'...

    Все знают, что хорошим стилем написанием сайта является отделение кода от дизайна. Но то, что я увидел в самописной CMS, детище прошлого PHP-кодера, повергло меня в тихий ужас.

    Каждый HTML-тег со всеми атрибутами был переопределён в отдельную функцию со своими параметрами. Нашлось место даже для замечательной функции br().

    [url]http://ithappens.ru/story/3663[/url]

    Запостил: Uchkuma, 19 Июля 2010

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

    • У меня на одной работе, лет 5 назад, начальнег так сделал (тот же человек, который написал свой класс CArray и CHash).

      аргументировал он просто: не нужно думать о закрывании тэгов. Правда, он вынес это в отдельный слой, так что у него вполне себе получилось отделение внешнего вида. Этакий шаблонизатор.

      При этом остальные архитектурные решения (с точки зрения ООП) у него были довольно изящные.
      Вот что бывает, когда старого плюс-плюсника бросают на PHP:))
      Ответить
    • конгениально! принципиально новый подход к верстке! утащил для осмысливания

      а вообще похожий чем-то подход сушествует (здесь мой вариант для пыха, но есть и для жабы и для других языков):
      $markup=new Markup();
      $markup->tag('html');
      $markup->tag('head');
      $markup->tag('title');
      $markup->text('Intro!');
      $markup->end();
      $markup->end();
      $markup->tag('body');
      $markup->tag('a',array('href'=>'./start.html'));
      $markup->tag('img',array('src'=>'start.jpg','alt'=>'Enter',true)); //third TRUE for single tag
      $markup->end();
      $markup->end();
      $markup->end();

      но он длинный, а сабж - верх короткости!
      Ответить
      • даже в перле уже хез сколько лет это есть (минимум 10).

        http://perldoc.perl.org/CGI.html#CREATING-STANDARD-HTML-ELEMENTS:
        Ответить
        • я много где это встречал, но кто первый оное придумал, не могу докопаться
          Ответить
          • Ну, Perlовому модулю CGIю это простительно: его в выдумали в 199X году, тогда вообще в DOCUMENT HERE писали
            Ответить
            • да, а в 2010 в пхп появился наудок, ггг http://php.net/manual/en/language.types.string.php
              Ответить
              • хм, хередок помоему давно был
                Ответить
                • в том и ггг. воротят, да не то, что нужно. напоминает D (http://www.digitalmars.com/d/index.html) своим изобилием ненужных плюшек
                  Ответить
      • Вот верстун-то обрадуется.
        Ответить
        • конечно. шаблоны еще никто не отменял
          Ответить
          • Вообще беда в том, что бОльшая часть веб "программистов" не вкурсе, что верстуны -- это такие отдельные люди. Потому они с радостью харкодят echo "<BR>" в свой код, изобретают стопицотпервый блевотный шаблонизатор или юзают вот такой вот отличный подход
            Ответить
            • может, кто нибудь на стопицотпервый сделает гениальный без кавычек синтез... а так, закон старджона в действии.
              Ответить
              • таки я знаю, что надо юзать в качестве шаблонизатора, но лучше промолчу. Иначе скастую cheefa, который прийдет, и скажет что верстать надо во forntpage)
                Ответить
                • а я не боюсь его. вы хотели сказать пхп - шаблонизатор?
                  Ответить
                  • Если выбирать из существующих PHP шаблонизаторов -- то лучше юзать сам PHP конечно.
                    Зачем нужен smarty? Чем он лучше того же PHP?
                    Ответить
                    • smarty и его клоны - уг.
                      вижу смысл пхп-шаблонизаторов, если они:
                      - основаны на хмл (свой формат тегов, как в смарти - на йух!)
                      - пассивизировать шаблоны (что бы верстуны не наверстали вирусов)
                      Ответить
                      • (испуганно) о, нет! Вы же не предлагаете использовать xslt?
                        Нас сейчас заклюют))))
                        Ответить
                        • xslt неплохой вариант, если результат компилировать в пхп и кешировать, хотя и слишком сложен в логической связи - особенно для верстунов.
                          если все же нужен пхп-наблонизатор, не выкидыш смарти, не хслт и не пхп, могу посоветовать пхптал: http://phptal.org/
                          хотя и его есть за что критиковать
                          Ответить
                          • Что такое "компилировать в php"?

                            Кстати, Вы не задумывались никогда, что PHP это сам по себе шаблонизатор?

                            В каждой технологии есть бекэнд и шаблонизатор.
                            Например: сервлеты / jsp. или .NET / ASP.NET. Так вот PHP это шаблонизатор для бекэнда на сях:)
                            Ответить
                            • > Что такое "компилировать в php"?
                              пишем шаблон,а шаблонизатор делает из него пхп-код, который потом и использует.

                              > что PHP это сам по себе шаблонизатор?
                              честно, это давно не новость. препроцессор хтмл, так оно и есть
                              Ответить
                              • >>пишем шаблон,а шаблонизатор делает из него пхп-код, который потом и использует.
                                Забавная идея, не думаю что кто-нить решит ее воплотить в жизнь. Если стоит вопрос о производительности -- лучше кешировать.
                                Ну а если компилировать -- то наверное не в php:)
                                Ответить
                                • пхптал так и делает, иначе бы и не рекламировал. одновременно с кешированием. правда, код получается довольно говнистый, но это присуще генерированному коду. зато быстро
                                  пхп средствами да не в пхп - это что из фантастики. не каждый хостер даст исполнять С-код
                                  Ответить
                                  • Ну, если речь идет о шаред-хостингах за $2 -- то и правда не даст)
                                    Ответить
                                    • пока не начнем делать свой фейсбук с блекджеком и чего еще душе не хватает - хватит.
                                      Ответить
                            • грубо говоря,пхп - тот же хслт, только не из хмл в хтмл, а из макро-хтмл в хтмл
                              Ответить
                              • только если очень грубо.
                                XSLT -- функциональный язык, превращающий одно дерево в другое на основе промышленных стандартов (xpath, xslt, xml итд).

                                PHP -- императивный язык, да еще и с прямо скажем не лучшей архитектурой. Но в качестве шаблонизатора не плох)
                                Ответить
                                • ладно. преобразователь, препроцессор. т.е. на нем макросы катать, а не цмс-ки
                                  Ответить
                                  • PHP для этого и нужен! Нефиг на нем CMSки делать:)
                                    Он что бы быстро вывести содержание базы данных в красивом формате на страничку
                                    Ответить
    • $kakras
      Ответить
    • http://www.gigamonkeys.com/book/practical-an-html-generation-library-the-interpreter.html
      Ответить
      • :D
        а foooooooooo gigaCodeMonkey
        Ответить
        • ;)
          Хотя там-то как раз всё нормально сделано.

          Внешний вид синтаксиса этого ГК напомнил просто.
          Ответить
          • А меня в статье по ссылке порадовали (: и ))))))
            Вот, оказывается, как возникли смайлики!
            Ответить
    • Я херею)))) Человек знает про файлики .css )))
      Ответить
    • Это обфускатор.
      Ответить

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