当前位置:  开发笔记 > 编程语言 > 正文

我为什么要在PHP中使用模板系统?

如何解决《我为什么要在PHP中使用模板系统?》经验,为你挑选了6个好方法。

我为什么要在PHP中使用模板系统?

我的问题背后的原因是:PHP本身是功能丰富的模板系统,我为什么要安装另一个模板引擎?

到目前为止我找到的唯一两个职业选手是:

    更清晰的语法(有时)

    模板引擎通常不够强大,无法实现业务逻辑,因此它会强制您分离关注点.使用PHP进行模板化可以引诱您绕过模板原理并再次开始编写代码汤.

......与利弊相比,两者都可以忽略不计.

小例子:

PHP

Smarty的

{$title}

    {foreach item=item from=$items}
  • {$item}
  • {/foreach}

我真的没有看到任何差异.



1> Kent Fredric..:

是的,正如你所说的,如果你不强迫自己在PHP(模板引擎)中使用模板引擎,那么就很容易滑倒并停止分离问题.

然而,在分离问题时遇到问题的人最终会生成HTML并将其提供给Smarty,或者在Smarty中执行PHP代码,因此Smarty很难解决您关注的问题.

也可以看看:

PHP作为模板语言或其他一些模板脚本

通过PHP插入HTML的最佳方法是什么?


显示逻辑始终是一个滑坡.什么时候斑马条纹或文本格式变成"真正的"逻辑?我的意见是,如果你问自己这个问题,而不只是说,"哇哇哇哇哇",你走的是正确的道路.

2> Kylotan..:

人们使用模板系统的主要原因是将逻辑与表示分开.这有几个好处.

首先,您可以将模板交给网页设计师,他们可以根据自己的需要移动内容,而无需担心保持代码流.他们不需要理解PHP,只是为了知道单独留下特殊标签.他们可能必须为一些标签学习一些简单的语义,但这比学习整个语言简单得多.

此外,通过将页面拆分为单独的文件,程序员和设计人员可以同时处理同一个"页面",在需要时检入源代码控制,而不会发生冲突.设计人员可以针对稳定版本的代码测试他们的模板视觉效果,而程序员正在针对他们自己的副本进行其他可能的重大更改.但是如果这些人都在编辑同一个文件并且必须在不同的更改中合并,那么您可能会遇到问题.

它还强制执行良好的编程实践,以使业务逻辑远离表示逻辑.如果您将业务逻辑与演示文稿混合在一起,那么如果您需要稍后以不同方式呈现它,则更难以提取它.如今,Web应用程序中不同的呈现模式越来越受欢迎:RSS/ATOM提要,JSON或AJAX响应,手持设备的WML等.使用模板系统,这些通常可以完全使用模板完成,不需要或几乎不做任何改动其他.

然而,并非所有人都需要或欣赏这些好处.PHP相对于Java/Python/Ruby /等的优势在于,您可以快速攻击具有某些逻辑的网页,这一切都很好.


当然,这都是事实,但是您不需要单独的模板引擎来实现这一点.PHP本身可以按照您描述的方式使用.也许这是我糟糕的措辞.我的意思是模板系统作为产品而不是方法.
很好的答案.逻辑和表达的分离是最大的好处.允许更改设计而不必担心代码会大大提高生产力.
如果你有纪律,你可以在纯PHP中实现自己的关注点分离,但随着项目逐渐增加到拥有更多的开发人员,确保你的学科也适用于其他开发人员/设计人员将变得越来越重要. .

3> gasper_k..:

使用非PHP模板以分离逻辑为借口是无稽之谈.如果开发人员不了解业务视图逻辑分离是什么以及应该如何完成,那么必须适当地解决问题.否则,您最终会在业务逻辑中使用HTML或在模板中使用业务逻辑 - 没有模板引擎会为您节省开支.你必须向开发人员讲授基础知识.

如果开发人员确实理解这一点,模板系统只是一个限制.它不会给开发过程增加任何价值,只是学习新语法,保持另一个库最新,执行速度较慢的开销.虽然后者可以通过缓存和诸如此类的方法来解决,但这只能解决原本不存在的问题.因此,模板系统没有任何价值,也没有任何优势.

但是有一个例外,我认为使用非PHP模板系统是合理的:当视图逻辑程序员必须具有对模板的有限访问权限时.例如,如果您是博客托管系统的提供商,并且您希望允许您的用户对其模板进行个性化和编码,而不允许他们执行任意代码.这种说法,然而,这并不适用于那些设计师为愿意学习一些代码,以帮助编程界面的情况.如果他能学习Smarty,他肯定可以学习PHP.



4> Vadim Ferder..:

模板系统仍然有充分的理由使用,但不是Smarty,而是PHPTAL.PHPTAL模板是有效的XML(以及XHTML)文件.您可以在PHPTAL中进一步使用虚拟内容,从而获得具有最终外观的有效XHTML文件,可以使用标准工具进行处理和测试.这是一个小例子:

First Name Last Name Age
Max Mustermann 29

PHPTAL模板引擎将自动插入来自users数组的所有值并替换我们的虚拟值.尽管如此,该表已经是有效的XHTML,可以在您选择的浏览器中显示.



5> Gabriel Sosa..:

对我来说,模板引擎的一大特色就是缓存层对你来说是透明的.我很久以前就一直在使用smarty,缓存的东西让生活更轻松.智能设计也允许您使用自己的缓存功能.在我的情况下,我选择是否某些页面应该使用memcache或磁盘来存储模板输出.

另一方面,如果您的网站流量很大,而且您不知道如何管理聪明并调整它,那么任何模板引擎都可能成为网站杀手.但即使不使用smarty,您的网站也会死亡.

flickr目前正在使用smarty.它不应该太糟糕,不是吗?



6> Wickethewok..:

PHP 一个很值得模板系统.关键是强迫自己将逻辑与演示分开.使用Smarty或类似的东西只会使混合逻辑和表示稍微不方便.如果你不能让自己独立,使用模板系统是没有用的.它所要做的就是消耗额外的处理能力.

关键是不要改变演示代码中的任何值.要做到这一点,我认为如果你使用if/endif语法,PHP本身就像Smarty一样有效:


   Some text!

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有