29

我最近发现了 PHP 框架Kohana(非常棒),并且正在阅读一个关于将它与诸如SmartyTwig之类的模板引擎结合使用的线程。我的问题是为什么要打扰?当然,根据定义,MVC 框架是一个模板引擎。甚至“原始” PHP 也可以说是一个模板引擎。在诸如 Kohana 之类的框架中已经存在的内容之上添加另一个抽象级别有什么可能的好处?

编辑 - 我意识到 MVC 框架与模板引擎不同,但 V 部分肯定做同样的工作吗?也许更好的措辞方式是;为什么要在 MVC 框架的 V 部分之上添加模板引擎?

4

6 回答 6

18

我有两个很好的理由可以想到这样做......

  1. 创建在整个站点中以一致格式重复的标记更容易,而且您可以稍后更新它而无需大量 grepping。
  2. 如果这是一家真正的公司,确定内容的人不太可能真正熟悉 HTML,更不用说 PHP。拥有一种简单的模板语言,可以让样式保持正确的方式并在没有太多代码知识的情况下生成有效的标记,这真的很方便。
于 2009-11-05T03:32:38.313 回答
18

首先,原始 PHP 不是模板引擎。

接下来,MVC框架定义了框架分为Model、View和Control。这并不意味着框架具有模板引擎,尽管 View 可以与本地或外部模板引擎集成。因此,该框架可能有也可能没有模板引擎。

第三,查看!= 模板。视图只是指数据的显示方式-通常不涉及模板,而模板引擎是指能够将数据很好地放入模板中的一段代码-当您可以修改所有文件时,您可以大大减少修改它们的需要在模板中

最后,框架用户可能更喜欢使用更常见的模板引擎,例如 Smarty,而不是框架中的原生模板引擎。您无需学习原生模板引擎中的新标签。

于 2009-11-05T02:47:39.120 回答
9

除非你允许短标签,

{$foo}

比可读性强得多

<?php echo $foo; ?>

乘以一个大项目,它加起来。

于 2009-11-05T02:46:30.603 回答
6

您想要一个单独的模板引擎的一个重要原因是原始 PHP 对于您的网站的展示来说有点太多了。如果只是您制作网站,并且您对如何将网站的模板组合在一起有一个很好的想法,那么这并不是真正的缺点,但对于较大的项目,它会妨碍您。

如果您的项目已经超过了单个开发人员,或者如果您想在此之前添加设计师,那么 PHP 可能是一种难以表达演示文稿的语言。专用模板语言具有优势,因为它们很简单,而且不需要给你那么多绳子,让你上吊。

较大的项目,即使它们不需要来自多个开发人员的大量输入,也会使纯 PHP 的自由形式有点笨拙。专门构建的模板引擎提供(或强制执行)每个模板如何与其余模板相适应的基本结构。

于 2009-11-05T02:49:08.887 回答
2

Mauris已经介绍了为什么 MVC != 模板引擎,但我想补充一点,模板引擎越强大,模板就越简洁。这使得不熟悉 PHP 的人特别容易编辑它们(例如:如果设计师/前端开发人员需要编辑 HTML)。一般来说,MVC 不吹嘘这种功能。

看看 Smarty 的这个例子。我从来没有使用过这个引擎,回答这个问题是我第一次看到它的标记,但我已经可以确切地知道它在做什么。

此外,您必须编写的代码量明显减少,因为 Smarty 和其他引擎会为您处理日常事务,例如第一个示例中的空数据集的替代行颜色和替代内容,以及本示例中的格式化<select>列表等愚蠢的事情例子

于 2009-11-05T03:28:05.610 回答
1

MVC 实现了对 PHP 模板的管理,如果你和网页设计师一起工作,使用 HTML 模板可能会更好。Smarty 和 Twig 很有名,而且很好。无论如何,只需选择您觉得更舒服的模板引擎。

于 2011-02-26T22:49:57.040 回答