为什么我要在PHP中使用模板系统?
我的问题背后的推理是: PHP本身就是一个功能丰富的模板系统,为什么我要安装另一个模板引擎?
到目前为止,我发现的唯一两个优点是:
语法更清晰的(sometimes)
..。与缺点相比,两者都是微不足道的。
小示例:
PHP
<h1><?=$title?></h1>
<ul>
<? foreach ($items as $item) {?>
<li><?=$item?></li>
<? } ?>
</ul>
智能
<h1>{$title}</h1>
<ul>
{foreach item=item from=$items}
<li>{$item}</li>
{/foreach}
</ul>
我真的看不出有什么不同。
发布于 2009-01-12 16:46:52
是的,正如您所说,如果您不强制自己在PHP (模板引擎)中使用模板引擎,就很容易滑倒并停止分离关注点。
然而,同样是那些在分离关注点时遇到问题的人最终会生成并将其提供给smarty,或者在Smarty中执行代码,所以Smarty很难解决你的关注点分离问题。
另请参阅:
发布于 2009-01-12 16:54:26
人们使用模板系统的主要原因是将逻辑从表示中分离出来。这样做有几个好处。
首先,你可以把一个模板交给一个网页设计师,他可以在他们认为合适的时候移动东西,而不必担心代码的流动。他们不需要理解PHP,只要知道不要去管特殊的标签就行了。他们可能必须为几个标签学习一些简单的语义,但这比学习整个语言要简单得多。
此外,通过将页面拆分成单独的文件,程序员和设计师都可以同时在同一“页面”上工作,根据需要签入源代码管理,而不会发生冲突。设计人员可以针对代码的稳定版本测试他们的模板视觉效果,而程序员正在针对自己的副本进行其他潜在的破坏性更改。但是,如果这两个人都在编辑同一个文件,并且必须合并到不同的更改中,您可能会遇到问题。
它还强制执行良好的编程实践,使业务逻辑远离表示逻辑。如果您将业务逻辑与表示混合在一起,那么如果以后需要以不同的方式表示它,那么提取它就会更加困难。如今,web应用程序中的不同呈现模式越来越流行: RSS/ATOM提要,JSON或AJAX响应,手持设备的WML等。使用模板系统,这些通常可以完全通过模板完成,而不需要或很少更改其他任何内容。
然而,并不是每个人都需要或欣赏这些好处。与Java/Python/Ruby/etc相比,PHP的优势在于你可以快速地在网页中加入一些逻辑,这一切都很好。
发布于 2009-01-13 13:32:01
以分离逻辑为借口使用非PHP模板是无稽之谈。如果开发人员不了解业务-视图逻辑分离是什么以及应该如何实现,则必须适当地解决问题。否则,最终的结果是业务逻辑中的HTML或模板中的业务逻辑--没有模板引擎可以拯救您。你必须教给开发人员一些基础知识。
如果开发人员确实了解这一点,那么模板系统只是一个限制。它不会给开发过程增加任何价值,只会增加学习新语法的开销,使另一个库保持最新,并降低执行速度。虽然后者可以通过缓存等解决,但这只是解决了一个原本不会存在的问题。所以,模板系统没有任何价值,没有任何优势。
但是,有一个例外,我认为使用非PHP模板系统是合理的:当视图逻辑程序员必须对模板具有有限的访问权限时。例如,如果您是博客托管系统的提供商,并且希望允许用户对其模板进行个性化和编码,而不允许他们执行任意代码。然而,这一论点不适用于设计师愿意学习一些代码来帮助编写UI的情况。如果他能学会Smarty,他肯定能学会PHP。
https://stackoverflow.com/questions/436014
复制相似问题