Библиотека тегов PHP - PullRequest
0 голосов
/ 04 ноября 2008

Я терпеть не могу 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.)

Редактировать

Э-э-э, похоже, я ударил по нервам. Некоторые уточнения:

  1. Я единственный разработчик в этом проекте.
  2. Как я смешиваю код с HTML? Объект "html_tag" из моей библиотеки очень похож на, скажем, узел в DOM. Метод «рендеринга» - это тот, который создает html (с прекрасным отступом, я должен добавить), но я нигде не пишу открывающий или закрывающий тег.
  3. Я создаю небольшие объекты для нескольких задач. Эти объекты имеют методы для создания объектов тегов; эти результирующие объекты затем вставляются, скажем, в таблицы или страницы.
  4. Я упоминал, что я застрял с PHP?
  5. В моей библиотеке есть несколько примитивных методов доступа для поиска объектов. Таким образом, пример итератора, размещенный в 26288 , может быть реализован с относительной легкостью.
  6. Я не беспокоюсь о производительности (пока). Я всегда думал, что это действительно хорошая проблема, но я еще не там.

Ответы [ 13 ]

0 голосов
/ 12 января 2009

Очень мало фреймворков для php, которые делают то, что вы хотите. Попробуйте Прадо или Yii . Они поддерживают полноценные библиотеки тегов, а не только системы шаблонов. Вы также можете проверить phpframeworks.com, вы можете найти другую платформу, которая делает то, что вам нужно.

Я также разрабатываю свой собственный фреймворк с поддержкой библиотек тегов и манипуляций с dom на стороне сервера, но мне все же нужно немного оптимизировать код перед публикацией чего-либо, этот проект находится под http://players.sourceforge.net.

0 голосов
/ 04 ноября 2008

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

Это не означает, что вы можете отделить логику от дисплея, например, такую ​​простую систему, как предложил Оуэн. Но уклоняться от соглашения php, смешанного с HTML, просто потому, что вам это не нравится, немного глупо - это то, как язык был создан для использования.

0 голосов
/ 04 ноября 2008

Я знаю, что вы не хотите слышать о шаблонных системах, но если вы только смотрели на Smarty, вы упускаете лучший вариант. Попробуйте Крошечный, но сильный

Как и вы, я единственный разработчик, но я считаю, что TBS значительно повышает мою производительность и поддержку моего кода. В отличие от smarty, он не накладывает на шаблоны макроязык и полностью на 100% совместим с Dreamweaver - шаблоны действительно и действительно остаются как wysiwyg, что экономит абсолютную массу времени.

Возможность писать весь мой код в отдельных файлах из шаблона означает, что он может быть отформатирован и упорядочен стандартным способом. Техническое обслуживание - дремучее, поскольку я всегда знаю, как структурирован мой код.

Я использую TBS с библиотеками XAJAX, и это работает, но вы можете смешивать с любыми предпочитаемыми вами библиотеками - у меня, например, довольно хорошо работает с Dojo, и я смотрю на jQuery.

...