1

我试图找出为我正在编写的 PHP 模板类实现 RoR 样式的部分/集合的最有效方法。对于那些不熟悉 rails 的人,我想遍历位于单独文件中的模板片段(例如表格行或列表项)。我想在不诉诸 eval 或在循环中放置 include 的情况下做到这一点。

我看过一篇类似的帖子,它解决了单个部分,这很简单,但没有涉及在集合中实现部分。我一直在考虑这个问题,我的头很痛,我担心我忽略了一个明显的解决方案。我希望这里有人可以提出一个优雅的解决方案,同样,不需要 eval 或包含在循环中。TIA。

4

2 回答 2

1

你需要一个模板引擎,它可以自己处理包含,然后一次评估整个事情。很像 c 预处理器的工作原理。

第 1 步(源模板):

$template = '
   foreach($bigarray as $record)
       #include "template_for_record.php"
'

第2步(预处理后):

$template = '
   foreach($bigarray as $record)
       // include statement replaced with file contents
       echo $record['name'] etc
'

第 3 步(最终渲染)

  // eval() only once
  eval($template);

通过这种方式,您可以避免在每个循环步骤中评估/包含子模板的开销。

于 2009-10-27T22:50:32.043 回答
0

您在问如何在不求助于解决方案的情况下做某事。

您使用的任何模板系统都将在循环中使用 eval 或 include,即使它隐藏在 1000 层深的抽象中。

这就是它的完成方式。

于 2009-10-27T20:43:50.263 回答