1

在我的 PHP 脚本中,我将很多 HTML 与一些 PHP/MySQL 数据混合在一起(第一个示例)。通常,我的代码看起来很乱,因为您不能将任何结构带入这种代码组合。

所以,我想知道,第二个脚本是否比第一个脚本更慢(或性能更低)?

第一个脚本

$message = <div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
<div class="input" style="margin-left: 210px;"><b>' . $item1[0]['organisation'] . '</b>
</div><div class="label" style="width:200px; float:left; text-align:right;">Group:</div> <div class="input" style="margin-left: 210px;"><b>' .
  $item1[0]['group'] . '</b></div><div class="label" style="width:200px; float:left; 
text-align:right;">Name:</div> <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['firstname'] . ' ' . $item[0]['lastname'] . '</b></div>

第二个脚本

$message  = <div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
$message .= <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['organisation'] . '</b></div>
$message .= <div class="label" style="width:200px; float:left; text-align:right;">Group:</div> 
$message .= <div class="input" style="margin-left: 210px;"><b>' .$item1[0]['group'] . '</b></div>
$message .= <div class="label" style="width:200px; float:left; text-align:right;">Name:</div> 
$message .= <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['firstname'] . ' ' . $item[0]['lastname'] . '</b></div>

还是有更好的方法来处理 PHP 生成的 HTML 页面?

4

4 回答 4

6

可读性应始终优先于性能优化。您询问哪个更快的事实表明您实际上并未将任何性能损害追溯到相关代码。您似乎真正要问的是如何使代码更具可读性,这是可以理解的,因为代码旨在由人类阅读并由计算机执行。

在这些情况下,我的第一个建议是,当您输出大量 HTML 且仅输出一小部分 PHP 代码时,始终退出 PHP 解析器。

<?php
/* Put your PHP code here */
$PHP = "PHP";
?>
<p>This is some html with a little <?php echo $PHP ?> code</p>

通过关闭您PHP tags编写大量 HTML 代码,您只需告诉 PHP 停止解析 PHP 代码并将后面的所有内容作为纯文本输出,直到opening PHP tag找到另一个。

另一种选择是使用不需要所有凌乱的单/双引号转义的heredoc语法。

可以直接在字符串语法中进行变量插值,因此以下工作:

$string = <<<EOL
<p>This is some html with a little $PHP code</p>
EOL;
于 2012-12-05T10:05:29.323 回答
2

你不会注意到两者之间的任何区别。这是 99.999% 的网站永远不需要担心的微优化。

我个人会做这样的事情:

<div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
<div class="input" style="margin-left: 210px;"><b> <?php echp $item1[0]['organisation'] ?> </b></div>
<div class="label" style="width:200px; float:left; text-align:right;">Group:</div> 
<div class="input" style="margin-left: 210px;"><b><?php echo $item1[0]['group'] ?></b></div>
<div class="label" style="width:200px; float:left; text-align:right;">Name:</div> 

然后,更进一步,不要使用内联样式。这将大大提高可读性和可编辑性

于 2012-12-05T09:53:49.170 回答
0

如果您真的需要输出到字符串并且想要编写干净的代码,我会使用输出缓冲。

ob_start()
?>
<html>
<body>
  <div></div>
</body>
</html>
<?
$message = ob_get_contents();
ob_end_clean();

但最好输出实际的 html,然后只回显 PHP 变量,如<?=$var?>或事件<?php echo $var; ?>

于 2012-12-05T10:03:45.647 回答
0

同意无情。您没有性能问题,而是维护问题;-)

我建议你看看这个示例代码,看看你能做什么。

<form method="post" action="add_url_here">
    <label>
        Organisation:
    </label>
    <input type="text" name="organisation" value="<?php echo $item1[0]['organisation'] ?>" />

    <label>
        Group:
    </label>
    <input type="text" name="group"  value="<?php echo $item1[0]['group'] ?>" />

    <label>
        Name:
    </label>
    <input type="text" name="name"  value="<?php echo $item1[0]['name'] ?>" />
</form>

和造型:

<style>
    label {
        width:200px; 
        float:left; 
        text-align:right;
    }

    input {
        margin-left: 210px;
    }

</style>

你甚至可以这样做:

$message =
  '<form method="post" action="add_url_here">
    <label>
    Organisation:
    </label>
    <input type="text" name="organisation" value="' . $item1[0]['organisation'] . '" />

    <label>
    Group:
    </label>
    <input type="text" name="group"  value="' . $item1[0]['group'] . '" />

    <label>
    Name:
    </label>
    <input type="text" name="name"  value="' . $item1[0]['name'] . '" />
</form>';
于 2012-12-05T10:08:14.423 回答