PHPの最後の終了タグ ?> は付けないでおこうねというお話

この記事は昨年2015年11月に書いたものを修正した記事です!

こんにちは。とみっちです。

何年か前に会社勤めしていた際、PHPの終了タグは付けてはダメって言われたのが衝撃的だったので、同様の記事をよく見かけますが、改めて書いてみます。

PHPの開始タグと終了タグ

PHPではお馴染みの、この構文。

<?php



?>

ファイル全体が純粋なPHPコードである場合と、WordPressやHTMLテンプレートなどで、HTMLの途中にこの記述を差し込んで、PHPを動作させることが可能です。

PHPの終了タグは省略可能

ファイル全体が純粋なPHPコードの場合、PHPの終了タグ

?>

という記述は、省略してもプログラムは動作します。

しかし、HTMLテンプレートなどに、

<h2>見出し</h2>
<p>テキストテキスト・・・</p>
<p><?php echo $variable_text; ?></p>

といった感じで、PHPの構文を差し込んで使用する場合は省略できません。

また、PHPのフレームワークによっては、コーディング規約に終了タグを記述しないように書かれていることもあります。

Zend Frameworkの場合

Zend FrameworkのPHP標準コーディング規約には、以下のように書かれています。

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

省略することを推奨しているかと思いきや、

決して含めてはいけません

と、PHPコードのみのファイルでは終了タグを書かないことを定めている。

PHPの構文で、「省略できる」ということなら、最初から書いてはいけない仕様にしてよーとかって思うわけなんですけど、HTMLの中に、PHPの記述を簡単に入れられるという便利仕様があるため仕方ないですね。

PHPの終了タグで問題が起きる場合

PHPの終了タグの直後の改行コードは1つだけ無視されるのですが、2つ以上記述されていると認識されてしまいます。

PHPの終了タグ直後に複数の改行コードが見られる悪い例

<?php
  // includeファイル
  // なんか色々書いているとします
?>[許容される改行]
[ここに無駄な改行]
[EOF]

※↑このファイルでは、PHPの閉じタグ?>の後に改行コードが2つあります。
[EOF]はEnd Of Fileの略で、ファイル内での終了箇所です。

こういうファイルを使用すると、プログラムが誤作動する場合があります!!

例えばheader()関数を使用する場合、関数のコール前に改行コードなどの出力があるとエラーとなるので注意が必要です。

また、HTMLでは改行コードを半角スペースとして認識するので、出力されてしまうと、おかしな空白に悩まされる原因ともなります。

毎回、以下のように「許容される改行」が1つのみでPHPファイルを記述できていれば問題はないんですけどね。

<?php
  // なんか色々書いているとします
?>[許容される改行]
[EOF]

PHPの最後の終了タグ ?> は付けないでおこう

何かの拍子に改行タグを打ち込んでしまう可能性がありますので、ファイル全体が純粋なPHPコードの場合、PHPの最後の終了タグ ?> は付けないというルールで統一しましょう。

終了タグの後の改行コードに気をつけるよりも、よっぽど楽ですね!

プロから直接学べるプログラミングスクールの紹介!PHPコースあり!

Webデザインスクールの「WebCamp」が手がけるママのためのWebデザインコース

1ヶ月の短期集中でWebデザイナーを目指せます。仕事復帰を希望する主婦やママさんにオススメです。

1ヶ月でHP作成!WebCamp

【参考記事】HTMLの勉強ならTechAcademy(テックアカデミー)のフロントエンドコースが短期集中でオススメ!

自己流でプログラミングを覚えようとすると、環境設定でつまづく、書いたプログラムがなぜ動かないか解決できず、多大な時間を浪費してしまいがちです。

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!コードレビューしてもらえるのも素晴らしい点ですね。

プログラミング 無料体験

【参考記事】HTMLの勉強ならTechAcademy(テックアカデミー)のフロントエンドコースが短期集中でオススメ!

Web制作会社が立ち上げたWebデザイナー育成スクール Web塾超現場主義

Web制作に実際に携わっている講師陣が、現場で通用するスキルを伝授します!卒業後は転職支援、仕事紹介などを行っており、フリーランス独立する道を探すこともできそうです。

まだ「独立・開業はちょっと...」という方へは、当社の制作案件をお手伝いして頂く道も開けます。
Facebookアカウントでコメント

※本コメント機能はFacebookによって提供されており、この機能によって生じた損害に対してザ サイベースは一切の責任を負いません。

ABOUTこの記事を書いた人

数年前までバンド活動してました。ブログ、サイト運営で食べてます。フリーランス歴7年のWebクリエイター。飄々と生きています。これでも育児頑張ってます。長野市出身。埼玉県川越市在住。【興味】音/Web/車(GolfV GTI等)/田舎/旅/酒 ※自然の音からデスメタルまで聴きます。@tomicci 詳しいプロフィール【運営サイト】 ザ サイベース おと風景