【问题标题】:PHP equivalent for RoR template partials/collectionsRoR 模板部分/集合的 PHP 等效项
【发布时间】:2009-10-28 06:50:32
【问题描述】:

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

我见过similar post 处理单个部分,这是微不足道的,但没有涉及在集合中实现部分。我一直在考虑这个问题,我的头很痛,我担心我忽略了一个明显的解决方案。我希望这里有人可以提出一个优雅的解决方案,同样,不需要 eval 或包含在循环中。 TIA。

【问题讨论】:

    标签: php templates partial-views


    【解决方案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);
    

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

    【讨论】:

    • 我脑子里突然亮了一个灯泡。很好的答案。非常感谢!
    【解决方案2】:

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

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

    就是这样。

    【讨论】:

    • 该死...我希望我忽略了某种技巧。我想问题就变成了,在包含 50 或 100 行的集合中,哪种方法更常见/更有效,eval 还是 include?我猜是评估?
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多