Вопрос:

PHP против шаблонного движка

php templates

53046 просмотра

20 ответа

78276 Репутация автора

В настоящее время я обсуждаю выбор между PHP как механизмом шаблонов и механизмом шаблонов поверх PHP.

Какой у вас выбор и почему?

Я говорю, зачем использовать другой шаблонизатор, если PHP сам по себе является шаблонизатором.

Автор: Ikke Источник Размещён: 08.04.2009 08:43

Ответы (20)


10 плюса

98608 Репутация автора

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

Тем не менее, я ухожу от использования шаблонов, когда это только я (или я и другие разработчики).

Автор: Mark Biek Размещён: 08.04.2009 08:46

24 плюса

31532 Репутация автора

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

Автор: rogeriopvl Размещён: 08.04.2009 08:47

38 плюса

0 Репутация автора

Я обнаружил, что когда я представил Smarty, было довольно просто заставить веб-дизайнеров создавать HTML с переменными smarty. Ребята из команды программистов теперь сосредоточены на дополнительной серверной работе, то есть на создании содержимого переменных Smarty.

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

Автор: stuart Размещён: 08.04.2009 08:51

14 плюса

35638 Репутация автора

Применяются следующие причины:

  • Разделение вашего приложения на шаблоны с помощью движка делает ваше приложение менее уязвимым для остановки ошибок кода
  • Использование шаблонов может дать вам большую гибкость в будущем при рефакторинге, потому что пространство имен не будет напрямую встроено в приложение
  • Использование шаблонов поощряет (заставляет) разработчиков сохранять бизнес-логику и код вне уровня представления.
  • Используя шаблоны, проще смоделировать наборы данных и передать их шаблонному движку и получить предварительный просмотр того, как сайт будет выглядеть с данными.
Автор: cgp Размещён: 08.04.2009 08:53

48 плюса

25849 Репутация автора

Для шаблонных движков:

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

Для обычного php:

  1. Скорость чистого PHP не может сравниться ни с одним из созданных на нем шаблонных движков.
  2. Полная мощность PHP доступна на выход, а не просто интерпретировать или фильтруются часть.

Я предпочитаю сам PHP, если это вообще возможно. И большинство людей не хотят взламывать ваше программное обеспечение, создавая собственную тему, поэтому легко прочитать и исследовать ее безопасность. Тем не менее, я "между парнем", который занимается шаблонизацией и программированием, и даже некоторыми графическими искусствами; Мой набор навыков отличается от строгого программиста и строгого художника / дизайнера.

Автор: Robert K Размещён: 08.04.2009 08:53

0 плюса

199 Репутация автора

Если бы мне пришлось потратить время на изучение автономного движка шаблонов, я бы вместо этого потратил время на изучение фреймворка. Я выбрал Zend Framework, который, будучи реализованным с использованием подхода MVC, предоставляет вам всю мощь фреймворка вместе с собственными возможностями шаблонов самого PHP.

Автор: PHPexperts.ca Размещён: 08.04.2009 08:54

3 плюса

11243 Репутация автора

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

Автор: acrosman Размещён: 08.04.2009 08:54

5 плюса

13093 Репутация автора

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

Такие продукты , как Smarty или PHPTAL, хороши , если у вас нет времени накатывать свои собственные (и не требуется больше, чем они предлагают). Кроме того, вы можете довольно легко заменить / изменить их позже своей собственной реализацией, если вы обнаружите, что вам нужно что-то более специализированное.

Лично у меня был хороший опыт работы с PHPTAL, в первую очередь потому, что он не мешает вам и прост.

Автор: seanhodges Размещён: 08.04.2009 09:12

6 плюса

79815 Репутация автора

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

Выходные данные PHP по умолчанию не экранированы, поэтому, если вы не забудете тщательно добавлять htmlspecialchars()везде, ваш сайт будет иметь уязвимости в HTML-инъекциях (XSS).

<p>Hello <?= $name ?></b>
<!-- Simple template full of errors -->

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

Вот почему я рекомендую PHPTAL . OPT2 тоже в порядке.

Автор: Kornel Размещён: 25.05.2009 07:57

1 плюс

0 Репутация автора

Я не знаю, связано ли это с VirtueMart, Joomla или с концепцией шаблонов в PHP, но адаптация VirtueMart к вашей собственной графической теме - это PURE HELL. (Я не говорю о простом CSS-стиле.)

Автор: Yaroukh Размещён: 04.06.2009 01:35

1 плюс

8914 Репутация автора

PHP не является движком шаблонов, это язык сценариев.

Автор: Toby Allen Размещён: 04.06.2009 02:11

2 плюса

5318 Репутация автора

Мой выбор для любого нового проекта, вероятно, будет состоять в том, чтобы просто использовать возможности шаблонов PHP, возможно, в сочетании с инфраструктурой MVC, вместо использования другого механизма шаблонов. В конце концов, для простоты кода или чистоты разделения, на самом деле не имеет значения, есть ли у вас {$myVar}или <?= $myVar ?>в вашем коде. Более сложные функции шаблонов, такие как условия, циклы или бэкэнд-технологии, такие как кэширование, также могут обрабатываться (или лучше) PHP или средой MVC.

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

Автор: Daan Размещён: 04.06.2009 02:22

10 плюса

430 Репутация автора

PHP - это не механизм шаблонов, а язык, который можно использовать для написания шаблонов или шаблонизаторов. Механизм шаблонов - это не только язык, но и API-интерфейс программирования, который позволяет сценариям находить, организовывать шаблоны или назначать им данные из сценария. Чистый PHP не предлагает вам абсолютно ничего - это просто язык. Вместо этого вы должны использовать для сравнения такие библиотеки, как Zend_View в Zend Framework (в основном, он работает точно так же, как и Smarty, за исключением того, что он использует PHP для написания шаблонов). Вы должны спросить, следует ли использовать шаблонизатор с PHP или что-то еще в качестве языка шаблонов.

Когда дело доходит до самих шаблонизирующих языков, тогда ... обычных циклов и условий достаточно для написания шаблонов, но это «недостаточно» не означает, что это легко, удобно, эффективно или гибко. PHP не предлагает ничего особенного для дизайнеров шаблонов, но многие «языки шаблонов» (например, Smarty) предоставляют лишь ограниченное подмножество PHP, поэтому я не удивлен, что программисты выбирают PHP. По крайней мере, они могут писать функции и использовать ООП, что слишком много для этого (на мой взгляд), но работает и действительно помогает.

Дело в том, что пользовательские языки шаблонов не ограничены недостатками PHP, но их разработчики не видят этого, утверждая, что «отображения переменных и цикла достаточно». Возможные области, где шаблоны могут быть намного эффективнее:

  • Отображение и рендеринг форм (я не видел ни одного фреймворка с PHP как языка шаблонов, который бы предоставлял простую, гибкую и универсальную систему для настройки внешнего вида формы).
  • Понимание структуры документа HTML / XML.
  • Автоматические инъекционные фильтры XSS.
  • Решение различных распространенных проблем на уровне представления (например, настройка внешнего вида системы нумерации страниц, отображение данных в столбцах и т. Д.)
  • Переносимость шаблона и истинное отделение логики приложения и деталей реализации от шаблонов.

Примеры шаблонных языков, которые следуют этому пути, упомянуты выше в PHPTAL и Open Power Template 2. Некоторые похожие идеи также можно найти в TinyButStrong, но, к сожалению, этот шаблонизатор работает очень медленно.

Автор: Zyx Размещён: 10.07.2009 04:40

5 плюса

4175 Репутация автора

Savant - это то, что вы ищете. Это хороший класс-обёртка, который позволяет вам использовать операторы PHP в ваших шаблонах вместо интерпретации нового языка шаблонов поверх PHP.

Плюсы:

Имеет смысл не добавлять дополнительную работу в систему.
Никакой кривой обучения для разработчиков Если вы все дисциплинированы, то это путь. (Савант)

Минусы:

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

Если я делаю проект для себя или проекта, в котором не так много разработчиков, я склонен использовать Savant. Если это проект, который намного больше меня, тогда в Архитектуре я пойду на что-то вроде Smarty.

В любом случае, разделение в коде важно, если вы используете Savant или Smarty. Я уверен, что есть и другие хорошие варианты.

Автор: Derek Organ Размещён: 30.11.2009 06:05

1 плюс

119 Репутация автора

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

Мой личный выбор - Raintpl, потому что он легкий, дружелюбный и быстрый, поэтому эталонный тест может помочь вам выбрать (также хороши smarty и savant!):

http://www.raintpl.com/PHP-Template-Engines-Speed-Test/

Автор: RainElemental Размещён: 10.01.2011 01:43

3 плюса

4547 Репутация автора

Следующая статья суммирует различные точки зрения на Шаблонные движки для PHP.

Создание шаблонов PHP третьего вида http://www.tinybutstrong.com/article_3rd_kind.html

Автор: Skrol29 Размещён: 01.04.2011 10:08

0 плюса

78276 Репутация автора

С тех пор, как я задал этот вопрос, мне попались усы . Это язык логики без логики.

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

Это кажется мне лучшим вариантом, чем переключение на язык шаблонов, где логика все еще возможна.

Автор: Ikke Размещён: 20.07.2012 10:06

0 плюса

1233 Репутация автора

Я недавно написал в блоге об этом.

В целях безопасности определенно используйте шаблонизатор (Twig безопасен).

Хороший шаблонизатор (например, Twig) предлагает:

  • Безопасность (самое главное, что когда-либо было)
  • Не многословно (как php)
  • Больше шаблонных функций
Автор: Petter Kjelkenes Размещён: 08.08.2012 05:15

0 плюса

1089 Репутация автора

В настоящее время он наиболее быстрый и простой в использовании. После создания набора тестов для движков шаблонов PHP Twig занимает второе место после родного языка php.

Автор: skonsoft Размещён: 01.09.2012 01:11

0 плюса

144 Репутация автора

Я использую шаблонизатор в PHP, потому что я предпочитаю иметь высокую степень разделения между бизнес-логикой и логикой представления. Веб-программирование намного проще, когда ваш PHP (или любой другой язык программирования) не разбросан по всему HTML. Это код Microsoft очень популярен.

Я использую шаблонизатор под названием KudzuPHP. Это порт моего KudzuASP для классического ASP. Он отличается от многих шаблонизаторов тем, что код, который содержит бизнес-правила и логику, становится обработчиком событий для шаблонизатора после его вызова. Этот подход позволяет изменять шаблоны (перемещая большие блоки представления), не требуя изменения кода PHP-кода.

KudzuPHP содержит собственную библиотечную систему, и написание новых тегов расширений и библиотек очень просто.

Вы можете найти KudzuPHP здесь: http://www.andrewfriedl.com/downloads/ Если вам нужна версия, встроенная в плагин Wordpress, которая позволяет вам кодировать API Wordpress без PHP, зайдите наверх Wordpress.org и поищите в плагинах " Kazoo».

Автор: Andrew Размещён: 28.07.2013 10:32
Вопросы из категории :
32x32