PHPを閉じるかどうか


14

phpファイルを閉じないことをお勧めします(特にphp 7の場合) ?>

私のWP phpファイルの多くは次のように終わります。

<?php get_sidebar(); ?>
<?php get_footer(); ?>

終了タグを削除して、このようなものを持っている必要があります

<?php get_sidebar(); ?>
<?php get_footer(); 

ファイルの最後に?


2
Laravelのような多くのフレームワークで見たように、閉じていないphpタグの後に何もなければ完全に問題ありません。ファイルの終わりでphpタグを閉じません。最後にphpタグを閉じないでください。したがって、WordPressコーディングスタイルに従い、閉じないでください。
Amirmasoud

1
おそらくトラックの関連チケット:#10633
Sven

回答:


19

はい。PHP7だけでなく、PHP 5でも同様に、ファイルの最後でPHPタグを閉じないでください。

理由は、タグを閉じると、タグの後ろにあるものは何でも出力に送信され、PHPがヘッダーを送信するだけでなく、Cookieの設定、作業へのリダイレクト、フィードの有効化、等々。

あなたは今までのようなメッセージに遭遇したと思います

ヘッダー情報を変更できません-ヘッダーは既に...で送信されています(...

?>ファイルの終わりで閉じることが原因である可能性があります。


1
これが正解だと思います。もともとテンプレートを取得したUnderscoresでさえ、最新のアップデートで終了タグを削除しました。
IXN

@IXNこれは、ファイル全体がPHPであり、したがって単一のPHPコードブロックで構成されている場合に正しいです(PHPコードブロックはファイルの終わりで暗黙的に閉じられます)。ただし、質問の例で示されているように、複数のPHPコードブロックがあり、HTMLとPHPが混在している場合は、TheDeadMedicの回答にあるように、PHPコードブロックを明示的に閉じる必要があります。
MrWhite

唯一の例外は、最後のphpコードブロックの後にhtmlが続く場合だと思います。ただし、ファイルの最後のシンボルが?>の場合は、省略することができます/すべきです。またはそう理解しています。
IXN

PHPの終了タグを省略(または含める)する主な理由は、開発中に愚かなバグが発生するのを避けるためです。前述のように、完全にPHPファイルの場合、これによりエラーが発生する偶発的な出力を回避できます。すでにHTML出力とPHPが混在しているファイルの場合、これはエラーにはなりません。ただし、最後のHTMLコンテンツを追加する前にPHPタグを明示的に閉じる必要があるため、この2番目のケースで終了PHPタグを省略するとバグが発生する可能性があります-これは完全にPHPコードファイルで行うことではありません。
MrWhite

WPソースを見ると、PHPの(ほとんどの)には末尾のPHPタグが含まれていないことがわかります。ただし、テンプレートファイル(HTMLコードブロックとPHPコードブロックを混在させる)には、常に終了PHPタグが含まれます。
MrWhite

11

あなたの特定の例を考えると、私は終了タグ、すなわちテンプレート内の1行の関数呼び出しを保持します。一貫性があり、わかりやすくするために(WordPress が配列に末尾のコンマを推奨するのと同じように)-そうでない場合は、開発者以外がファイルを選択して追加し始めた場合を想像してください:

<?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

私はそれがよりきれいだと思うし、他の人が言ったように、恐ろしい「ヘッダーはすでに送られている」というリスクはない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.