【问题标题】:PHP templating challenge (optimizing front-end templates)PHP模板挑战(优化前端模板)
【发布时间】:2010-03-08 02:28:34
【问题描述】:

我正在尝试做一些模板优化,我想知道是否可以做这样的事情:

function table_with_lowercase($data) {
    $out = '<table>';
    for ($i=0; $i < 3; $i++) { 
        $out .= '<tr><td>';
        $out .= strtolower($data);
        $out .= '</td></tr>';
    }
    $out .= "</table>";

    return $out;
}   

注意:当你运行这个函数时,你并不知道 $data 是什么。

结果:

<table>
    <tr><td><?php echo strtolower($data) ?></td></tr>
    <tr><td><?php echo strtolower($data) ?></td></tr>
    <tr><td><?php echo strtolower($data) ?></td></tr>
</table>

一般情况:任何可以评估(编译)的东西都可以。任何时候有一个未知变量,该变量和包含它的函数,都会以字符串格式输出。

这里还有一个例子:

function capitalize($str) {
    return ucwords(strtolower($str));
}

如果 $str 是 "HI ALL" 那么输出是:

  • 大家好

如果 $str 未知,则输出为:

  • &lt;?php echo ucwords(strtolower($str)); ?&gt;

在这种情况下,只调用函数会更容易(即&lt;?php echo capitalize($str) ?&gt;),但之前的示例允许您预编译 PHP 以提高效率

【问题讨论】:

  • 个人资料。您在此处的示例不会对性能进行有意义的改进。找出应用程序中的实际瓶颈,并解决这些问题。

标签: php compilation templating


【解决方案1】:

定义 CSS 样式并让客户端完成工作,而不是服务器端。

change_case {
    text-transform: lowercase; /* force text to lowercase */
    text-transform: uppercase; /* force text to uppercase */
    text-transform: capitalize; /* force text to proper case */
}

...

【讨论】:

  • 感谢您的回复。这只是一个简单的示例,我希望能够制作遵循相同规则的通用(更复杂)功能,这些功能不一定容易让客户端管理。
【解决方案2】:

这绝对是可能的。但是,为 php 编写一个有效的优化编译器并非易事。一个简单的可能不会提供显着的好处。一个好的好处甚至是值得怀疑的。

【讨论】:

  • 所以你认为我最好在运行时运行这个函数?
  • 不要说这样的东西不会很好,但是您在模板中执行的操作类型不太可能成为您应用程序的瓶颈。因此,如果您需要/想要优化,可能会有更多有益的事情可以花费您的时间。分析代码和应用程​​序将有助于揭示应该引起您注意的内容。
【解决方案3】:

您最好的选择可能是使用单独的模板语言来生成优化的 PHP 代码。 Smarty 是一个受欢迎的选择。

【讨论】:

  • 谢谢,我以前用过 Smarty - 它的开销是无法承受的。这个问题是尝试和讨厌聪明的结果。
猜你喜欢
  • 2015-03-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 2020-07-18
  • 2018-03-20
  • 2019-02-02
相关资源
最近更新 更多