2010年9月8日水曜日

終了タグはいらない?[PHP]

知らなかった。。

PHPのみが記述されるソースファイルにはPHPの終了タグである ?> を書くべきではないということ。
PHPの勉強を初めてまず最初に目にするのは
<?php
echo phpinfo();
?>

というプログラムだったりする訳でして、PHPのプログラムは で終わるという事を最初に覚えるのですが、Zend のコード規約によるとどうやらそうじゃないみたい。

付録 A. Zend Framework PHP 標準コーディング規約 : A.2. PHP ファイルの書式
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。終了タグは、PHP には必要ありません。 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。

と明確に書いてある。これは、ここ最近 PHP に関するメーリングリストで交わされてたスレッドから初めてしった事。いやはや思いも寄らぬ新発見というか勉強になったというか。そんなスレッドを立てて下さった質問者の方に感謝。
確かに思い起こしてみると、終了タグの後に空白文字が意図せずに入っている事が原因で、header()関数をどこかで使ってるプログラムなんかでハマった事が何度かありました。そういう事態を防げる訳ですね。素晴らしい。