代码优化与串联

时间:2012-12-05 09:52:30

标签: php html optimization

在我的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 个答案:

答案 0 :(得分: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 syntax,它不需要所有混乱的单/双引号转义。

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

$string = <<<EOL
<p>This is some html with a little $PHP code</p>
EOL;

答案 1 :(得分: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> 

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

答案 2 :(得分:0)

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

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

但输出实际的html然后只回显像<?=$var?>或事件<?php echo $var; ?>

这样的PHP变量更好

答案 3 :(得分: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>';