PHP中的字符串连接案例性能问题?

时间:2014-07-26 18:49:58

标签: php templates

我在PHP中看到了类似的代码

public function fetch()
{
    $xml = '';
    $xml .= '<' . '?xml version="1.0" encoding="utf-8"?' . '>' . "\n";
    $xml .= '<rss version="2.0">';
    $xml .= '<channel>';
    $xml .= '<title>TEST</title>';
    $xml .= '<description>TEST</description>';
    foreach ($this->items as $item)
    {
        $xml .= '<item>';
        $xml .= '<title>' . $item['title'] . '</title>';
        $xml .= '<description>' . $item['body'] . '</description>';
        $xml .= '</item>';
    }
    $xml .= '</channel>';
    $xml .= '</rss>';
    return $xml;
}

代码使用了很多stings concat(。=),你认为这不是一个好方法吗? 它看起来像是不必要的内存使用情况。

这些代码是MCV“VIEW”的一部分,该函数已经将处理过的数据放入“items”数组中。该函数将进行渲染。

您是否同意而不是

echo $this->fetch();

使用模板文件更好?像这样:

include('template.php');

然后在template.php中:

<?xml version="1.0" encoding="utf-8">
<rss version="2.0">
<channel>
<title>TEST</title>
<description>TEST</description>
    <?
    foreach ($this->items as $item){
        echo '<item>';
        echo '<title>' . $item['title'] . '</title>';
        echo '<description>' . $item['body'] . '</description>';
        echo '</item>';
    }
    ?>
</channel>
</rss>

我认为第二种方法会更好。你同意吗?或任何其他评论?

编辑:

用户指出使用模板也没有。那么,你什么时候使用模板?什么时候不使用? (那些教程总是告诉我,无论如何我都可以使用模板,我有点迷惑。)

1 个答案:

答案 0 :(得分:0)

使用模板不一定更好,因为它是I / O操作(并且I / O操作通常很昂贵)。 相比之下,串联的性能要高出几倍。您可以删除不必要的连接(例如'&lt;'。'?xml'部分)或使用HEREDOC / NOWDOC(http://php.net/manual/fr/language.types.string.php)。

在一天结束时,只要应用程序不是纯粹的性能驱动,它主要取决于开发人员的选择。

编辑:正如评论中所述,使用XML读取器/编写器类将证明更强大并提高可维护性。