PHP vs 模板引擎

61

我目前正在讨论在PHP作为模板引擎与在PHP之上使用另一种模板引擎之间的选择。

您的选择是什么,为什么?

我的观点是,既然PHP本身就是一种模板引擎,那么为什么还要使用另一种模板引擎呢。


4
提供的链接错误(页面未找到)。 - nowox
模板引擎编译成本地的 PHP,因此使用模板引擎没有任何损失,而有很多收益。如果您查看任何现代模板引擎,如 Smarty 或 Twig,您将看到它们将模板编译为源 PHP,因此输出与手动在 PHP 中制作页面相同。但是,模板引擎知道如何更好地编译 PHP 页面,因为模板引擎由数千人维护。 - Patrick W. McMahon
如果您习惯使用模板引擎,那么使用纯PHP构建模板/视图将会很繁琐,并且难以阅读。然而,正确的答案是完全跳过php模板引擎,直接使用KnockoutJS或AngularJS来创建模板,并为所有内容使用AJAX。祝玩得愉快! - Andrew
20个回答

3

我发现在PHP中构建一个轻量级的模板引擎对我们来说效果最好。这样可以实现良好的代码分离,我们的图形设计师可以学习一些简单的规则,但大多数人编写的是HTML/CSS而不是PHP。我可以编写重要的代码,而无需过多考虑界面。


2
我的选择是在新项目中使用 PHP 的模板功能,可能结合 MVC 框架使用,而不是使用另一个模板引擎。毕竟,对于代码的简洁性或分离的清晰性来说,你的代码中有 {$myVar} 还是 <?= $myVar ?> 并不重要。更复杂的模板特性,如条件、循环或缓存等后端技术,PHP 或 MVC 框架同样可以很好地处理(甚至更好)。我已经尝试过这两种方法(使用和不使用模板引擎),但只在个人项目中使用过,从未在团队项目中使用过,因此在这种情况下使用模板引擎可能有令人信服的理由。

1

PHP编码特性不断进化,设计特性保持不变。因此,如果你与设计师和开发人员共同工作,你需要一个模板引擎来并行处理任务,并让设计师使用HTML。

我个人的选择是Raintpl,因为它轻量级、友好快速。这里有一个基准测试可以帮助你做出选择(Smarty和Savant也很不错哦!)

http://www.raintpl.com/PHP-Template-Engines-Speed-Test/


1

我不知道是因为 VirtueMart、Joomla 还是 PHP 模板概念的原因,但调整 VirtueMart 到自己的图形主题是纯粹的地狱。(我不是在谈论普通的 CSS 样式。)


这是因为Virtuemart是我遇到过的编码最糟糕的应用程序之一。VM实际上没有模板系统,“模板”只是一堆函数、内联PHP代码和无效的HTML。 - DisgruntledGoat

1

PHP不是一个模板引擎,而是一种脚本语言。


0

目前来看,Twig是最快速和易于使用的模板引擎。在对PHP模板引擎进行一系列基准测试后,Twig仅次于原生PHP语言排名第二。


这些结果在哪里? - Isaac

0
自从我提出这个问题,我发现了mustache。这是一种无逻辑的模板语言。
因此,它与PHP或smarty不同,你可以在模板中添加各种逻辑,但必须将所有逻辑保留在类似于视图模型的东西中。
对我来说,这似乎比切换到仍然可能存在逻辑的模板语言更好的选择。

视图模型很快就会与mustache模板紧密耦合,因此非常难以重用。视图不是“无逻辑”的,将视图逻辑放在视图模板中没有任何问题,这是应该的! - Leven
我喜欢我的视图尽可能地保持简洁,尽量避免在其中加入逻辑。这样它们就更容易理解。好处是,你的视图中实际需要测试的功能非常少。视图模型应该与视图绑定,它们是一对。两者的组合才能被重复使用。 - Ikke

0

我在PHP中使用一个模板引擎,因为我喜欢将业务逻辑和展示逻辑高度分离。当你的PHP(或任何其他编程语言)没有HTML散布时,Web编程会变得更加容易。这就是为什么Microsoft的Code Behind如此受欢迎。

我使用一个名为KudzuPHP的模板引擎。它是我的KudzuASP的Classic ASP的端口。它与许多模板引擎不同之处在于,托管业务规则和逻辑的代码在模板引擎被调用后成为模板引擎的事件处理程序。这种方法允许您修改模板(移动大块的演示文稿),而无需修改PHP代码的代码。

KudzuPHP包含自己的库系统,并且编写新的扩展标记和库非常容易。

您可以在这里找到KudzuPHP:http://www.andrewfriedl.com/downloads/ 如果您想要嵌入在Wordpress插件中的版本,使您可以针对Wordpress API进行编码而无需PHP,请转到Wordpress.org并搜索“Kazoo”插件。


0

如果我必须花时间学习一个独立的模板引擎,我宁愿花时间学习一个框架。我的选择是使用Zend框架,当使用MVC方法实现时,它为您提供了框架的强大功能,以及PHP本身的本地模板能力。


4
相较于编写和调试模板所需的时间,学习新的模板语言所花费的时间微不足道,因此我认为这是一个值得投资时间的好机会。 - Kornel
学习一个框架需要比学习一个模板引擎花费更多的时间。 - Sameera Kumarasingha

0

我最近写了一篇关于这个的博客文章。

出于安全考虑,一定要使用模板引擎(Twig 是安全的)。

一个好的模板引擎(如 Twig)提供以下功能:

  • 安全性(无论如何都是最重要的)
  • 不冗长(不像 PHP)
  • 更多的模板特性

哎呀!找不到该页面。 - krishna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接