В настоящее время я обсуждаю выбор между PHP как механизмом шаблонов и механизмом шаблонов поверх PHP.
Каков ваш выбор и почему?
Я говорю, зачем использовать другой шаблонизатор, если PHP сам является шаблоном.
В настоящее время я обсуждаю выбор между PHP как механизмом шаблонов и механизмом шаблонов поверх PHP.
Каков ваш выбор и почему?
Я говорю, зачем использовать другой шаблонизатор, если PHP сам является шаблоном.
Для шаблонизаторов:
Для простого php:
Я предпочитаю сам PHP, если это вообще возможно. И большинство людей не хотят взламывать ваше программное обеспечение, создавая собственную тему, поэтому легко можно бегло прочитать и изучить его безопасность. Тем не менее, я "посредник", который занимается и шаблонами, и программированием, и даже графическим искусством; мой набор навыков отличается от строгого программиста и строгого художника / дизайнера.
Я обнаружил, что когда я представил Smarty, было довольно просто заставить веб-дизайнеров создавать HTML с умными переменными. Ребята из группы программирования теперь сосредоточены на бэкэнд-работе, то есть на создании содержимого переменных Smarty.
Это сократило жизненный цикл разработки, и теперь работа может быть разделена между большим количеством людей, и, в конечном итоге, привело к лучшему дизайну.
Ну, это всего лишь мое мнение, но движки шаблонов - отстой. Вы должны сначала понять, как реализован механизм шаблонов, а затем научиться его использовать. Это кажется пустой тратой времени, потому что только PHP делает это лучше всего и предлагает гораздо большую гибкость.
Возможны следующие причины:
Использование механизма шаблонов может быть полезным, если над шаблонами работает не программист. Во многих случаях упрощенный язык шаблонов может быть проще для непрограммиста, чем сам PHP.
Тем не менее, я ухожу от использования шаблонов, когда остаюсь только я (или я и другие разработчики).
PHP не шаблонизатор, а язык, который можно использовать для написания шаблонов или шаблонизаторов. Механизм шаблонов - это не только язык, но и программный API, который позволяет сценариям находить, организовывать шаблоны или назначать им данные из сценария. Чистый PHP ничего не предлагает вам - это просто язык. Вместо этого вы должны взять для сравнения такие библиотеки, как Zend_View в Zend Framework (в основном, он работает точно так же, как Smarty, за исключением того, что использует PHP для написания шаблонов). Вы должны спросить, следует ли вам использовать механизм шаблонов с PHP или что-то еще в качестве языка шаблонов.
Что касается самих языков шаблонов, то что ж ... обычных циклов и условий достаточно для написания шаблонов, но это «достаточно» не означает, что это легко, удобно, эффективно или гибко. PHP не предлагает ничего особенного для разработчиков шаблонов, но многие «языки шаблонов» (например, Smarty) предоставляют только ограниченное подмножество PHP, поэтому я не удивлен, что программисты выбирают PHP. По крайней мере, они могут писать функции и использовать ООП, что для этого слишком массивно (на мой взгляд), но действительно работает и действительно помогает.
Дело в том, что пользовательские языки шаблонов не ограничены недостатками PHP, но их разработчики обычно не замечают этого, заявляя, что «достаточно отображения переменных и цикла». Возможные области, в которых языки шаблонов могут быть более эффективными:
Примеры языков шаблонов, которые следуют этому пути, упомянуты выше PHPTAL и Open Power Template 2. Некоторые аналогичные идеи также можно найти в TinyButStrong, но, к сожалению, этот механизм шаблонов работает очень медленно.
PHP как шаблонизатор не будет жаловаться, если вы перепутаете синтаксис HTML. Это позволит вам забыть закрыть теги, неправильно их вложить и т. Д.
По умолчанию выходные данные PHP не экранируются, поэтому, если вы не помните, что строго повсюду добавляете htmlspecialchars()
, ваш сайт будет иметь уязвимости HTML-инъекции (XSS).
<p>Hello <?= $name ?></b>
<!-- Simple template full of errors -->
Эти проблемы усугубляются, когда вы пытаетесь создать XHTML должным образом. Дело не в том, что вы не можете сделать это с помощью простого PHP - конечно, можете - но это требует больше усилий и усердия.
Вот почему я рекомендую PHPTAL. OPT2 тоже подойдет.
Savant - это то, что вы ищете. Это хороший класс-оболочка, который позволяет вам использовать операторы PHP в ваших шаблонах вместо интерпретации нового языка шаблонов поверх PHP.
Плюсы:
Имеет смысл не добавлять дополнительную работу в систему.
Не нужно учиться разработчикам. Если вы все дисциплинированы, то это правильный путь. (Савант)
Минусы:
Хотя Savant поощряет правильное разделение, это не заставляет разработчика отделять бизнес-логику от кода разработки. У меня есть правило, которое нельзя нарушать. Вы можете только выводить переменные, использовать условия и циклы в своих шаблонах. Вы никогда не должны позволять разработчику создавать переменные в шаблоне. К сожалению, кажется, что разработчики никогда этого не делают, сколько бы раз вы им ни говорили. Таким образом, использование такого движка, как Smarty, окупается, потому что разработчики вынуждены полностью разделять бизнес и дизайн.
Если я делаю проект для себя или проект, в котором мало разработчиков, я обычно использую Savant. Если это проект, который намного больше меня, тогда в архитектуре я выберу что-нибудь вроде Smarty.
В любом случае, разделение кода важно при использовании Savant или Smarty. Я уверен, что есть и другие хорошие варианты.
PHP идеально подходит для большинства задач, но шаблонизатор может облегчить масштабирование проекта.
Стандартные, например Smarty или PHPTAL отлично подойдут, если у вас нет времени на создание собственного (и вам не требуется больше, чем они предлагают). Кроме того, вы можете довольно легко заменить / изменить их позже, если обнаружите, что вам нужно что-то более специализированное.
У меня лично был хороший опыт работы с PHPTAL, прежде всего потому, что он не мешает вам и прост.
Я обнаружил, что создание легкого шаблонизатора на PHP лучше всего подходит для нас. Обеспечивает хорошее разделение кода, и наш графический дизайнер может выучить несколько простых правил, которым нужно следовать, но большинство из них пишет HTML / CSS, а не PHP. Я могу писать тяжелый код, не задумываясь об интерфейсе.
В следующей статье резюмируются различные точки зрения на механизмы шаблонов для PHP.
Создание шаблонов PHP третьего типа http://www.tinybutstrong.com/article_3rd_kind.html
Мой выбор для любого нового проекта, вероятно, состоял бы в том, чтобы просто использовать возможности PHP по созданию шаблонов, возможно, в сочетании с фреймворком MVC, вместо использования другого механизма шаблонов. В конце концов, для простоты кода или ясности разделения не имеет значения, есть ли у вас {$myVar}
или <?= $myVar ?>
в вашем коде. Более сложные функции шаблонов, такие как условия, циклы или бэкэнд-технологии, такие как кеширование, могут обрабатываться так же (или лучше) с помощью PHP или инфраструктуры MVC.
Я использовал оба подхода (с механизмом создания шаблонов и без него), но только в личных проектах, а не в командных проектах, так что, возможно, есть веские аргументы в пользу использования механизма шаблонов в такой обстановке.
Я не знаю, связано ли это с VirtueMart, Joomla или концепцией шаблонов в PHP, но настроить VirtueMart для вашей собственной графической темы - это ЧИСТЫЙ АД. (Я не говорю о простом CSS-стиле.)
PHP - это не шаблонизатор, а язык сценариев.
Функции PHP-кодирования эволюционировали, функции проектирования остались прежними, поэтому, если вы работаете в команде с дизайнерами и разработчиком, вам понадобится механизм шаблонов, чтобы распараллелить работу и позволить дизайнерам работать с HTML.
Мой личный выбор - Raintpl, потому что он легкий, дружелюбный и быстрый, здесь вам поможет тест (также умный и сообразительный - это хорошо!):
http://www.raintpl.com/PHP-Template-Engines-Speed-Test/
Если бы мне пришлось потратить время на изучение автономного механизма шаблонов, я бы предпочел бы вместо этого потратить время на изучение Framework. Я предпочитаю использовать Zend Framework, которая при реализации с использованием подхода MVC предоставляет вам мощь фреймворка вместе с собственными возможностями создания шаблонов самого PHP.
После того как я задал этот вопрос, я наткнулся на усы. Это язык шаблонов без логики.
Так что это не то же самое, что PHP или smarty, где у вас есть возможность добавить всевозможную логику к вашему шаблону, но заставляет вас хранить всю логику в чем-то вроде моделей представления.
Мне кажется, что это лучший вариант, чем переход на язык шаблонов, где логика еще возможна.
Я использую механизм шаблонов в PHP, потому что я предпочитаю иметь высокую степень разделения между бизнес-логикой и логикой представления. Веб-программирование намного проще, когда ваш PHP (или любой другой язык программирования) не имеет разбросанного по всему HTML HTML. Это код Microsoft, который так популярен.
Я использую шаблонизатор под названием KudzuPHP. Это порт моего KudzuASP для Classic ASP. Он отличается от многих механизмов шаблонов тем, что код, в котором размещены бизнес-правила и логика, становится обработчиком событий для механизма шаблонов после его вызова. Этот подход позволяет вам изменять шаблоны (перемещая большие блоки представления), не требуя изменения кода PHP-кода.
KudzuPHP содержит собственную библиотечную систему, и писать новые теги расширений и библиотеки очень просто.
Вы можете найти KudzuPHP здесь: http://www.andrewfriedl.com/downloads/ Если вам нужен Версия, встроенная в плагин Wordpress, которая позволяет вам писать код для Wordpress API без PHP, перейдите на Wordpress.org и найдите плагины по запросу "Kazoo".
в настоящее время он самый быстрый и простой в использовании. После создания набора тестов для движков шаблонов PHP, twig занимает второе место сразу после родного языка php.
Я недавно написал об этом в блоге.
Только из соображений безопасности обязательно используйте движок шаблонов (Twig безопасен).
Хороший движок шаблонов (например, Twig) предлагает: