什么是PHP的良好模板系统?

时间:2008-10-13 12:46:46

标签: php templates

为PHP整合模板系统最好/最简单的是什么,使用它有什么好处?

我目前根本不使用一个,并且我认为可能有助于将内容与演示文稿分开一些。

9 个答案:

答案 0 :(得分:14)

PHP本身就是一种非常好的模板语言。出于这个原因,大多数领先的PHP框架都没有使用单独的模板语言。

请确保您使用(重新考虑)MVC,并且不要在视图文件中执行任何数据访问或业务逻辑。

我也广泛使用过Smarty,但发现它与直接PHP相比没有什么优势,只是强迫你保持你的视野愚蠢。对于设计师来说,它看起来也可能更好一些,但缺点是模板实现者的灵活性。循环遍历三层嵌套数组的事情变得比使用直接PHP更难。

答案 1 :(得分:12)

Smarty


我发现它快速,易于使用且易于安装(即使在共享托管环境中)。它也不要求你使用有时候验证的XHTML(虽然我认为需要有效XHTML的模板引擎可能更快。)

将您的内容放在一个地方并将代码放在其他地方真的很棒。

另外,您不仅限于HTML。我已经使用Smarty生成 XML 甚至 SQL

答案 2 :(得分:3)

为了跟进Alex所说的话,我建议看一下Rasmus Lerdorf的文章The no-framework PHP MVC framework

Rasmus Lerdorf是创建PHP的人。

答案 3 :(得分:3)

我打赌PHPTAL

它检查文件语法并确保输出格式正确的XML 并具有正确的转义。这可以确保页面安全抵御XSS 攻击,而程序员不必每次都担心它。

Smarty和原始PHP不会自动处理转义,这意味着每个echo $foo${foo}(没有|escape}htmlspecialchars())可能是HTML注入漏洞,或者最少打破良好的形式。

PHPTAL具有很好的语法,适合HTML / XML的工作方式,例如:当你想要在标签中有条件地包装东西时,你不必重复自己:

<strong tal:omit-tag="condition">
  xxx
</strong>

而不是:

{if condition}<strong>{/if}
  xxx
{if condition-again!}</strong>{/if}

语法是XML而不是过于冗长(大多数只添加了属性)。 HTML和自定义标签式构造没有丑陋的混合。

答案 4 :(得分:1)

除了Mark的经验之外,我发现Smarty非常适合扩展。我已经建立了一个(企业)MVC框架,内置基于Smarty的视图,既简单又灵活。可以非常容易地扩展可用模板辅助函数的主机。

答案 5 :(得分:1)

使用模板引擎的最令人信服的理由可能是默认输出转义,可以减少或消除xss漏洞。

答案 6 :(得分:0)

这取决于您的重点:不同的模板引擎可以更好地适应不同的事物。与某些语句相比,Smarty相对较重,并且定义了一种比PHP更简单但更受限制的语法。使用不像编程语言的语法有好处,例如,如果您要求图形设计师构建模板。

Savant3之类的模板引擎,或Zend_ViewZend Framework组件中使用的模板引擎更轻,并使用PHP作为其语法。这为您的模板提供了更多的功能和灵活性,但要求您遵守将业务逻辑保留在模板之外的规范。此外,如果他要构建模板,PHP语法对于您的设计师来说可能过于复杂。

答案 7 :(得分:0)

我个人喜欢只使用单独的PHP / HTML文件的想法。它允许我使用其他HTML编辑器(如DreamWeaver),也可以允许不懂PHP的人,但知道HTML编辑模板而不必学习其他语言。

答案 8 :(得分:0)

我已经使用Smarty多年了,但是因为特殊的智能语法阻碍了一些简单的php会更容易,所以感到沮丧。 PHP本身就是一个模板语言的核心!我了解到php api对所有表示逻辑都足够了。

因此,Savant3及其后代Zend_View是卓越的解决方案。就像在Smarty中一样,您可以轻松地为重复性任务编写插件。