unoh.github.com

<?php を閉じてみる

Mon Dec 20 00:40:00 -0800 2010

こんにちは、7月からphpを始めた細川です。

phpの作法で<?phpではじめたファイルを?>で閉じない、というものがあります。これまで、あまり考えずに従ってきたのですが、よく考えてみると「タグを閉じない」というのは直感的には不作法です。

検索して調べてみると、以下のような記事が見つかりました。

http://zendframework.com より引用


PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。これは必須なものではなく、 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。

「決して」含めてはいけない。ということで、わりと大事のようです。
そこで、実際にタグを閉じると何がおこりうるのか調べてみることにしました。

まず、以下のようなphpファイルtest.phpを用意しました。

<html><body><?php
echo 'おはようございます';
?></body></html>

出力結果は以下のようになります。

<html><body>おはようございます</body></html>

次に、別のphpファイルfunctions.phpを用意し、それをrequireで読み込んでみます。

<?php

function hoge()
{
}

?>

functions.phpファイルは?>で閉じていますが、ファイル末尾にはなにもありません。

test.phpを以下のように変更します。

<html><body><?php
require('functions.php');
echo 'おはようございます';
?></body></html>


この場合、出力結果は、以下のようになります。

<html><body>おはようございます</body></html>

この場合には何も余分なものはつかないようです。

次に、閉じタグの後ろに改行をいれてみました。
その場合の出力結果が以下です。

<html><body>おはようございます</body></html>

改行だけでは問題ないようです。

改行を2つ入れてみました。

<html><body>
おはようございます</body></html>

改行が1つ挿入されました。

閉じタグの後ろに4つスペースをいれます。

<html><body>    おはようございます</body></html>

スペースが挿入されました。

最後に閉じタグ無しで末尾に4つスペースをつけた場合です。

<html><body>おはようございます</body></html>

当然といえば当然ですが、大丈夫ですね。

閉じタグ以降に改行だと2つ以上から、スペースだと1つ以上あると、出力に影響するようです。

必ずしも閉じタグをつけたからといって出力に影響が出るとは限らないようですが、事故防止のためには閉じない方が良さそうですね!