Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
smarty:最好让它来完成困难的部分,或者更好地为它提供php预编译html?_Php_Arrays_Performance_Smarty_Template Engine - Fatal编程技术网

smarty:最好让它来完成困难的部分,或者更好地为它提供php预编译html?

smarty:最好让它来完成困难的部分,或者更好地为它提供php预编译html?,php,arrays,performance,smarty,template-engine,Php,Arrays,Performance,Smarty,Template Engine,我在流浪。。如果,比如说,我必须建立一个菜单,或者说,一组基于产品数据数组的规格表。。换句话说,如果我必须渲染一个数组,从性能的角度来看,有什么更好的方法: a。在php中构建所有html(比如在控制器中),并将保存html的变量传递给smarty b。在php中不执行任何操作,将数组传递给smarty,并在模板中构建相关html?smarty模板在第一次处理时会编译为php代码,因此除非您正在执行一些特别奇特的处理,这很难用smarty语法表达,否则性能可能会非常相似 这个问题听起来也很像“过

我在流浪。。如果,比如说,我必须建立一个菜单,或者说,一组基于产品数据数组的规格表。。换句话说,如果我必须渲染一个数组,从性能的角度来看,有什么更好的方法:

a。在php中构建所有html(比如在控制器中),并将保存html的变量传递给smarty


b。在php中不执行任何操作,将数组传递给smarty,并在模板中构建相关html?

smarty模板在第一次处理时会编译为php代码,因此除非您正在执行一些特别奇特的处理,这很难用smarty语法表达,否则性能可能会非常相似

这个问题听起来也很像“过早优化”:你提前假设某件事可能是性能问题,并在你有任何可测量的结果之前花费精力“优化”它。当您实际有一些性能需要度量时,可以更好地节省这些精力,并且可以发现代码的哪些部分可以给您带来最大的改进

无论是您的选择还是您正在使用的应用程序的选择,像Smarty这样的模板语言的想法是它包含了您的所有显示逻辑,因此将显示逻辑移动到“控制器”(在MVC的思维方式中,它可能也是一个“视图”)中会打破分离点


如果您真的讨厌Smarty,您可以编写自己的“视图”层,将所有输出预处理为HTML,并将单个变量传递给Smarty模板,但我不确定您的目的是什么。

从性能角度看,Smarty第一次编译模板后,这可能并不重要,当它将其转换为php代码时。从实用的角度来看。。。您应该使用smarty将逻辑与表示分离。如果您想用php创建html代码,就不要使用smarty。好的,谢谢。我使用的是prestashop,所以我不得不使用smarty,我想知道它对处理器来说是否更重,是直接的php(显然应该是精心制作的)html转换还是smarty渲染。但是,你是对的,这里的重点应该是将逻辑与表示分开。不过,在这种情况下,至少对我来说有点模棱两可,因为如果我传递原始数组并使用smarty完成所有操作,那么我最终将使用smarty中的逻辑(用于执行循环、设置首末偶数项等等)。