最近、PHPのソースコードを読むことが多いです。
PHPといえば、
となっているものだと思い込んで読んでいたのですが、
どう見ても終了タグ「?>」がついていないファイルを見かけます。
そして、終了タグがなくても正常に動作しているようです。
PHPのことをほとんど理解していないので、試しに、Kindle unlimitedで「グーテンベルク時代のWordPressノート テーマの作り方(入門編) (EP NOTE SERIES)」という本を読み始めました。
「functions.php」のサンプルファイルを見ると、終了タグ「?>」がありません。
ただの間違いなのかと思って本を読み進めて見たところ、86ページに以下の記述がありました。
functions.phpの記述について
functions.phpに追加する設定はPHPで記述します。
PHPのコードは基本的にの中に書きますが、
functions.phpでは不要なトラブルが発生するため、
閉じる「?>」は記述しないことになっています。
なるほど、「functions.php」には「?>」は記述しないことになっているのですねと思ったのですが、
イマイチ納得できません。
スポンサーリンク
「functions.php」以外にも、終了タグがないファイルを見て頭を悩ませたことがあるからです。
PHPの終了タグ「?>」を書かなくても良い?
どうやら、ファイルの中身がPHPだけの場合、終了タグ「?>」を書かなくても良いようです。
さらにいうと、書いてはいけない、書くとトラブルが発生することすらあるとのことです。
終了タグ「?>」を書くと問題が発生するバターン
「?>」直後に1個だけ改行がある場合はもんだいありませんが、
その後ろに余分な改行があると、「?>」から2個目の改行以降は、HTMLにおいて半角スペースと認識されます。
なので、意図しないスペースが表示されたり、他のファイルから参照するときに、
余分な半角スペース(=改行)の存在により、誤作動を引き起こしたり、作動しなくなったりします。
そのため、純粋にPHPだけでできてて、他のファイルから参照されるファイルに関しては、終了タグをつけてはいけません。
そもそも、純粋なPHPのファイルには終了タグは不要なので、つけないということが正解となります。
PHPの終了タグ「?>」を書かないといけない時はあるの?
HTMLファイルなどの途中にPHPを書く場合は終了タグが必要です。