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

こんにちは!Tomicciです。

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

PHPの開始タグと終了タグ

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

<?php



?>

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

PHPの終了タグは省略可能

ファイル全体が純粋なPHPコードの場合、PHPの終了タグ ?> という記述は、省略してもプログラムは動作します。

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

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

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

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

Zend Frameworkの場合

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コースあり!

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

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

【TechAcademy】家で学べるプログラミングスクール

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

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

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

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

ABOUTこの記事を書いた人

とみっち

埼玉でザ サイベースを主催しています。Webクリエイター。フリーランス歴7年。飄々と生きています。これでも育児頑張ってます。長野市出身。 @tomicci 詳しいプロフィール【興味】ギター/DTM/Web/車/田舎/旅/酒/育児 自然の音からデスメタルまで聴きます。【運営サイト】 ザ サイベース おと風景