【问题标题】:Does it make a difference if I put a bunch code inside a single php tag vs breaking it up?如果我将一堆代码放在单个 php 标签中而不是将其分解,这会有所不同吗?
【发布时间】:2011-07-03 21:54:58
【问题描述】:

除了个人喜好,有什么区别吗?

<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strNum', true); 
  '' != $meta and print "$meta";
?>
<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strName', true); 
  '' != $meta and print "$meta";
?>

与此相反

<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strNum', true); 
  '' != $meta and print "$meta";

  $meta = get_post_meta(get_the_ID(), 'rw_strName', true); 
  '' != $meta and print "$meta";
?>

【问题讨论】:

  • 不是真的……我怀疑这是您的应用程序的瓶颈。在 99.999 % 的情况下,您不会注意到

标签: php micro-optimization


【解决方案1】:

第一个版本将在生成的输出中输出一个额外的换行符,因为?&gt;&lt;?php 之间有一个:

?>
<?php

这是唯一的区别;两者之间没有任何明显的性能影响。

【讨论】:

    【解决方案2】:

    &lt;?php ?&gt; 之外的所有内容都被视为输出。这意味着,

    ?>
    <?php
    

    可能输出一些东西。 “May”,因为?&gt; 之后的换行符是标签的一部分,因此不会返回。但是像

    ?>
      <?php
    

    有两个空格echoed。问题是,在某些内容返回浏览器后,您无法再设置任何标题。

    【讨论】:

      【解决方案3】:

      就像 knittl 所说,它不会产生任何明显的差异。唯一的区别是当你将 PHP 和 HTML 混合在一起时,它会让你的 HTML 更容易阅读,例如在做模板时。

      无论如何,php 解析器都会遍历整个文件,我怀疑遇到结束标记然后开始标记对解析/解析速度有任何影响。

      【讨论】:

        【解决方案4】:

        是的,它有所作为。看看这个:

        <?php
        $uselessvar = 1;
        ?>
        <?php
        header('Location: /'); // This will not work
        ?>
        
        <?php
        $uselessvar = 1;
        header('Location: /'); // This will work
        ?>
        

        在第一个示例中,第一个结束标记 ?&gt; 和第二个开始标记 &lt;?php 之间有一个新行。此新行被视为输出并将其发送给客户端。如果在调用之前将任何输出发送到客户端,header 函数将无法工作。这就是为什么第一个示例在第二个示例中不起作用的原因。

        以更一般的方式,最好只在需要的地方使用结束标记?&gt;,以避免此类错误。 例如,您不必在 php 文件的末尾添加结束标记 ?&gt;。有时我们会看到一个文件被一个结束标签终止,然后是一个新的空行。这个新的空行与上面的效果相同,并且可以崩溃/更改任何脚本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-24
          • 1970-01-01
          • 2011-11-26
          • 2019-08-18
          • 2020-03-30
          • 1970-01-01
          • 1970-01-01
          • 2018-03-23
          相关资源
          最近更新 更多