我最近发现了PHP框架Kohana(非常棒)并且正在阅读一个关于将其与模板引擎结合使用的帖子,例如Smarty或Twig。我的问题是为什么要打扰?当然,根据定义,MVC框架是一个模板引擎。甚至“原始”PHP也可以说是一种模板引擎。除了Kohana等框架中已经存在的内容之外,还有哪些可能的好处呢?
编辑 - 我意识到MVC框架与模板引擎不是一回事,但V部分肯定会做同样的工作吗?也许是一种更好的措辞方式;为什么要在MVC框架的V部分之上添加模板引擎?
答案 0 :(得分:17)
首先,原始PHP不是模板引擎。
接下来,MVC框架定义框架分为模型,视图和控件。这并不意味着框架具有模板引擎,尽管View可以与本机或外部模板引擎集成。因此,框架可能有也可能没有模板引擎。
第三,View!=模板。视图仅涉及数据的显示方式 - 通常不涉及模板,而模板引擎指的是能够将数据很好地放入模板的一段代码 - 您可以在修改所有文件时大大减少修改所有文件的需要在模板中
最后,框架用户可能更喜欢使用更常见的模板引擎(如Smarty)而不是框架中的本机模板引擎。您无需在本机模板引擎中学习新标记。
答案 1 :(得分:17)
我有两个很好的理由让我想到这样做......
答案 2 :(得分:8)
除非你允许短标签,否则
{$foo}
比
更具可读性<?php echo $foo; ?>
在一个大型项目上相乘,它会加起来。
答案 3 :(得分:6)
您想要一个单独的模板引擎的一个重要原因是因为原始PHP对于您的网站的呈现来说有点太多了。如果它只是你制作你的网站,并且你对网站的模板如何组合起来有一个很好的想法,那么这不是一个真正的缺点,但对于大型项目,它会阻碍。
如果您的项目已经超出了单个开发人员,或者如果您想在此之前添加设计器,那么PHP可能是一种难以表达演示文稿的语言。专用的模板语言具有优势,因为它们很简单,并且不要给你这么多绳索,以便自己吊死。
较大的项目,即使它们不需要来自多个开发人员的大量输入,也可以使纯PHP的自由形式有点笨拙。专用模板引擎提供(或强制执行)每个模板如何与其余模板匹配的基本结构。
答案 4 :(得分:2)
Mauris已经涵盖了为什么MVC!=模板引擎,但我想补充一点,模板引擎越强大,模板就越清晰,越简洁。这使得不熟悉PHP的人可以轻松编辑它们(例如:如果设计人员/前端开发人员需要编辑HTML)。一般来说,MVC并不夸耀这种功能。
从Smarty看一下这个example。我从来没有使用引擎,回答这个问题是我第一次看到它的标记,但我已经可以确切地知道它的作用了。
此外,你需要编写的代码量明显少于Smarty和其他引擎为你处理平凡的事情,如第一个例子中的空数据集的替代行颜色和替代内容,以及格式化等愚蠢的事情this example中的<select>
列表。
答案 5 :(得分:1)
MVC实现了PHP模板的管理,如果您在团队中与Web设计人员合作可能更好地使用HTML模板。 Smarty和Twig很有名。 无论如何只需选择你觉得更舒服的模板引擎。