PHP コード末尾の終了タグ「?>」を省略する方がよい

PHP コード末尾の終了タグ「?>」を書かないことによるメリットについて。

test.php

<?php
    // 様々なコード
    
?>

この例は PHP コードの末尾に「?>」を記述していますが、「?>」の後ろにスペースや改行が含まれていると、それが出力されてしまいます(ただし1つ目の改行は出力されない)。つまり、print ' ';(半角スペース出力) や echo "\n";(改行コード出力)を記述しているようなものです。

require される PHP ファイルの場合、これによって問題が生じる場合があります。requrie した後で header を出力しようとすると、半角スペースや改行が既に出力されているためエラーになります。

Zend Framework のコーディング規約では、終了タグ「?>」を禁止しています。「PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません」と記載されています。
Zend Framework コーディング規約
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.general


また、PHP マニュアルでも終了タグ「?>」の省略は認められていますし、require や include される PHP ファイルでは終了タグ「?>」を省略する方が役立つと書かれています。
PHP マニュアル - Instruction separation
http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php(英語)
http://www.php.net/manual/ja/language.basic-syntax.instruction-separation.php(日本語)


終了タグ「?>」を省略する方が、余計なトラブルを避けられて良さそうですね。