PHP по сравнению с [закрытым] движком шаблонов

Решено с помощью медиа-запросов print css!

ChromeVox добавляет разметку и стили в body страницы, которая выглядит следующим образом:

<div aria-hidden="true" class="cvox_indicator_container  ...more classes...">
...more html markup...
</div>

Поэтому я обновил свой Глобальная таблица стилей CSS включает в себя следующее:

@media print {
  .cvox_indicator_container {
    display: none;
  }
}

, который работал отлично.

Затем я подумал, что хочу убедиться, что это никогда не изменится, даже если ChromeVox изменил свой CSS для большей специфичности.

Затем я обновил CSS:

@media print {
  html body div.cvox_indicator_container {
    display: none !important;
  }
}

Примечание: Это может быть излишним, но, безусловно, имеет больше специфичности.

В идеале команда ChomeVox добавит что-то вроде этого решения в свой код. Я пытался найти их репозиторий с открытым исходным кодом… подошел близко, но не смог. Halp?

60
задан 3 revs, 3 users 73% 11 January 2017 в 18:19
поделиться

14 ответов

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

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

10
ответ дан Mark Biek 24 November 2019 в 17:32
поделиться

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

24
ответ дан rogeriopvl 24 November 2019 в 17:32
поделиться

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

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

38
ответ дан stuart 24 November 2019 в 17:32
поделиться

Для шаблонизаторов:

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

Для plain-php:

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

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

такие как художники-графики или веб-дизайнеры.

Для plain-php:

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

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

такие как художники-графики или веб-дизайнеры.

Для plain-php:

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

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

а не просто интерпретируемая или отфильтрованная часть.

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

а не просто интерпретируемая или отфильтрованная часть.

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

48
ответ дан Robert K 24 November 2019 в 17:32
поделиться

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

0
ответ дан PHPexperts.ca 24 November 2019 в 17:32
поделиться

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

3
ответ дан acrosman 24 November 2019 в 17:32
поделиться

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

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

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

5
ответ дан 2 revs, 2 users 62% 24 November 2019 в 17:32
поделиться

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

  • Разделение приложения на шаблоны с помощью механизма делает ваше приложение менее уязвимым для остановки кода ошибки
  • Использование шаблонов может дать вам большую гибкость в будущем при рефакторинге, поскольку пространство имен не будет напрямую встроено в приложение
  • Использование шаблонов побуждает (заставляет) разработчиков сохранять бизнес-логику и код вне уровня представления.
  • Используя шаблоны, проще смоделировать наборы данных и передать их шаблонному движку и получить предварительный просмотр того, как сайт будет выглядеть с данными
14
ответ дан 2 revs 24 November 2019 в 17:32
поделиться

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

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

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

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

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

6
ответ дан 24 November 2019 в 17:32
поделиться

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

1
ответ дан 24 November 2019 в 17:32
поделиться

Я не знаю, связано ли это с VirtueMart, Joomla или концепцией шаблонов в PHP, но настройка VirtueMart для вашей собственной графической темы - это ЧИСТЫЙ АД. (Я не говорю о простом CSS-стиле.)

1
ответ дан 24 November 2019 в 17:32
поделиться

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

Я использовал оба подхода (с механизмом создания шаблонов и без него),

2
ответ дан 24 November 2019 в 17:32
поделиться

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

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

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

  • Отображение и рендеринг форм (я не встречал какой-либо структуры с PHP в качестве языка шаблонов, которая обеспечивала бы простой,
10
ответ дан 24 November 2019 в 17:32
поделиться

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

Плюсы:

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

Минусы:

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

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

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

5
ответ дан 24 November 2019 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: