Я терпеть не могу HTML, смешанный с кодом. Я едва могу посмотреть на один из этих шаблонов, не чувствуя тошноты. Я знаю, когда в вашем распоряжении целая армия «веб-дизайнеров», и вы единственный разработчик, имеет смысл использовать какую-то систему шаблонов. Я много слышал о Смарти. Но в моем случае это всегда было источником еще большей работы.
В любом случае, на этот раз я собираюсь в одиночку, поэтому я не хочу касаться шаблона HTML полюсом пословицы. То, что я сейчас делаю, выглядит так:
<?php
$page = new html_page('My wonderful page');
$page->add_contents(new html_tag('p', 'It works', array('id' => 'helloworld', 'class' => 'somecssclass')));
echo $page->render();
?>
Все принадлежит хорошей иерархии объектов, что хорошо и модно. Конечно, у меня есть много небольших классов, и я думаю об использовании динамических классов (например, 'html_a' автоматически создаст объект html_tag типа 'a'.)
Теперь мой вопрос: похоже, никто больше этим не занимается. Зачем? Я слишком далеко, и мой слабый, лишенный кислорода разум что-то упускает из общей картины?
(Я хорошо помню библиотеку с открытым исходным кодом, которая сделала именно это, но больше не может ее найти. Поэтому, если я на самом деле не представляю себе что-то, я не единственный, кто задумался об этом подходе к визуализации HTML.)
Есть ли у вас какие-либо мысли по этому поводу? (пожалуйста, воздержитесь от рекомендации другого языка; мой любимый язык - Perl, поэтому я могу легко перехитрить :-). Я застрял с PHP.)
Редактировать
Э-э-э, похоже, я ударил по нервам. Некоторые уточнения:
- Я единственный разработчик в этом проекте.
- Как я смешиваю код с HTML? Объект "html_tag" из моей библиотеки очень похож на, скажем, узел в DOM. Метод «рендеринга» - это тот, который создает html (с прекрасным отступом, я должен добавить), но я нигде не пишу открывающий или закрывающий тег.
- Я создаю небольшие объекты для нескольких задач. Эти объекты имеют методы для создания объектов тегов; эти результирующие объекты затем вставляются, скажем, в таблицы или страницы.
- Я упоминал, что я застрял с PHP?
- В моей библиотеке есть несколько примитивных методов доступа для поиска объектов. Таким образом, пример итератора, размещенный в 26288 , может быть реализован с относительной легкостью.
- Я не беспокоюсь о производительности (пока). Я всегда думал, что это действительно хорошая проблема, но я еще не там.