Шаблонный язык по сравнению с прямым PHP

-d средства Вы отправляете данные формы, через POST метод. -I средства Вы просто посмотрели на метаданные через HEAD.

я предложил бы любой

  • Загрузка к /dev/null и записал бы заголовки через -D headerfile к Использованию файла headerfile
  • -i, чтобы включать заголовки в ответы и пропустить все от первой пустой строки.
9
задан Carson Myers 14 September 2009 в 22:45
поделиться

6 ответов

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

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

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

Не пишите функции PHP для инкапсуляции блоков вывода HTML. Вместо этого используйте include () для извлечения фрагментов HTML. Этот метод иногда называют «частичными».

Вы также можете использовать инфраструктуру MVC, такую ​​как Symfony, Kohana, Solar, CodeIgniter или Zend Framework, чтобы помочь вам соблюдать дисциплину при отделении кода шаблона PHP от остального кода приложения. .

13
ответ дан 4 December 2019 в 07:14
поделиться

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

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

Довольно тривиально создать собственную маленькую систему шаблонов, которая использует php в шаблонах. Затем создайте различных помощников, чтобы ваш код шаблона оставался чистым (например, ваша функция "navigation ()").

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

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

7
ответ дан 4 December 2019 в 07:14
поделиться

Reinventing the wheel is most of the time a bad idea.

PHP is already a templating language. You don't need to implement your own.

As for Smarty it is the most complete templating system for php and it is still a bad idea.

A couple of articles on the subject:

If you want to look at templates done better look at:

  • phpSavant it uses php code and still promotes separation of concerns.

The final objective is of course to have easier code to maintain by promoting separation of Business Logic and Presentation

7
ответ дан 4 December 2019 в 07:14
поделиться

I wonder why noone mentioned what is one of the most important uses of a template language: automatic output escaping.

It's easy to forget a htmlspecialchars() here or there, so a template language that provides directives like {$name} has to make sure $name is automatically passed through htmlspecialchars, with the appropriate charset and everything.

Of course, that also implies that you can specify a different "context" for variable output, such as e.g. alert('Hi {$name|context=singlequotes}!'); where the template interpreter would escape $name's content so that it is impossible to break out of the single quotes, instead of XML escaping it (which should be the default).

Such contexts can also include stuff like int (to force a number), and it can also be extended to accept additional parameters to format the output, et etc.

My 2 cents. Not sure if there's an open source solution that allows for this (would be interested to hear about it!), I rolled my own interpreter for this stuff at work. Since the resulting "intermediate code" is pure PHP, it can also very easily be "cached" (like Smarty and other tpl systems do).

1
ответ дан 4 December 2019 в 07:14
поделиться

Вы можете посмотреть Smarty- http: //smarty.php. net Smarty - очень мощный шаблонизатор, который дает вам лучшее из обоих миров. Он имеет обширную поддержку пользовательских модулей и плагинов.

Я создал собственную CMS с помощью Smarty и PHP, и не могу сказать ничего, кроме хороших слов о нем.

PHP-код для использования Smarty выглядит следующим образом

<?php
// my cms

$smarty = new Smarty();
.
.
$smarty->display('home.tpl');

?>

Шаблон код выглядит примерно так

<h1>{$pagetitle}</h1>

{insert tag="navigation"}
2
ответ дан 4 December 2019 в 07:14
поделиться

Мне очень нравится Smarty, и я также считаю, что контроллеры должны быть написаны исключительно на XML, а модели на YAML. Это единственный способ реализовать MVC.

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

1
ответ дан 4 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

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