To close or not to close php

时间:2015-12-04 作者:IXN

我已经读到,建议(尤其是php 7)不要用?>

我的许多WP php文件的结尾如下:

<?php get_sidebar(); ?>
<?php get_footer(); ?>
我是不是应该去掉结尾的标签,吃点像这样的东西

<?php get_sidebar(); ?>
<?php get_footer(); 
在我的文件末尾?

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

是的,请避免在文件末尾关闭PHP标记,不仅使用PHP 7,也使用PHP 5。

原因是,如果关闭标记,标记后面的任何内容,即使是一个空行,都将发送到输出,并将使PHP发送标题,以及阻止设置cookie、重定向到工作、提要有效等等。

我想你曾经遇到过这样的消息

无法修改标头信息-标头已由发送(输出开始于…)在里面联机。。。

结束语?> 文件末尾可能是原因。

SO网友:TheDeadMedic

给出您的具体示例,我将保留结束标记,即模板中的单行函数调用。它是一致的,有助于清晰(与WordPress推荐的方式相同trailing commas for arrays)- 否则,想象一下,如果非开发人员拿起您的文件并开始向其中添加:

<?php get_footer();

<div>What the hell am I doing wrong?</div>
然而,对于所有其他文件(函数、包含等),建议无疑是一个好主意:

<?php // Start of file

class MY_Class {
    function just_do_it() {
    }
}

// Bye bye closing tag
我发现它更干净,正如其他人提到的,并没有可怕的“邮件头已经发送”的风险。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请