为PHP整合模板系统最好/最简单的是什么,使用它有什么好处?
我目前根本不使用一个,并且我认为可能有助于将内容与演示文稿分开一些。
答案 0 :(得分:14)
PHP本身就是一种非常好的模板语言。出于这个原因,大多数领先的PHP框架都没有使用单独的模板语言。
请确保您使用(重新考虑)MVC,并且不要在视图文件中执行任何数据访问或业务逻辑。
我也广泛使用过Smarty,但发现它与直接PHP相比没有什么优势,只是强迫你保持你的视野愚蠢。对于设计师来说,它看起来也可能更好一些,但缺点是模板实现者的灵活性。循环遍历三层嵌套数组的事情变得比使用直接PHP更难。
答案 1 :(得分:12)
我发现它快速,易于使用且易于安装(即使在共享托管环境中)。它也不要求你使用有时候验证的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_View的Zend Framework组件中使用的模板引擎更轻,并使用PHP作为其语法。这为您的模板提供了更多的功能和灵活性,但要求您遵守将业务逻辑保留在模板之外的规范。此外,如果他要构建模板,PHP语法对于您的设计师来说可能过于复杂。
答案 7 :(得分:0)
我个人喜欢只使用单独的PHP / HTML文件的想法。它允许我使用其他HTML编辑器(如DreamWeaver),也可以允许不懂PHP的人,但知道HTML编辑模板而不必学习其他语言。
答案 8 :(得分:0)
我已经使用Smarty多年了,但是因为特殊的智能语法阻碍了一些简单的php会更容易,所以感到沮丧。 PHP本身就是一个模板语言的核心!我了解到php api对所有表示逻辑都足够了。
因此,Savant3及其后代Zend_View是卓越的解决方案。就像在Smarty中一样,您可以轻松地为重复性任务编写插件。