Интересно, почему никто не упомянул, что является одним из наиболее важных применений языка шаблонов: автоматическое экранирование выходных данных.
Легко забыть htmlspecialchars () здесь или там, поэтому язык шаблонов, который предоставляет такие директивы, как {$ name}, должен убедиться, что $ name автоматически передан через htmlspecialchars, с соответствующей кодировкой и все.
Конечно, это также подразумевает, что вы можете указать другой «контекст» для вывода переменной, например, например. alert ('Hi {$ name | context = singlequotes}!'); где интерпретатор шаблона будет экранировать содержимое $ name, так что невозможно будет вырваться из одинарных кавычек, вместо того, чтобы XML экранировал его (что должно быть по умолчанию).
Такие контексты могут также включать в себя такие вещи, как int (для принудительного набора числа), и также могут быть расширены для принятия дополнительных параметров для форматирования вывода и т. Д.
Мои 2 цента. Не уверен, что есть решение с открытым исходным кодом, которое позволяет это (было бы интересно услышать об этом!), Я использовал свой собственный интерпретатор для этого материала на работе. Поскольку полученный «промежуточный код» является чистым PHP, его также очень легко можно «кэшировать» (как это делают Smarty и другие системы tpl).