【PHP】include、include_once、require、require_once の違いと使い分け
PHPはプログラムの中で他のファイルを読み込むことができます。
その際に使用するのがinclude、include_once、require、require_onceの4つ。
今回はそれぞれの違いと使い分ける方法を説明します。
「once」の有無について
「once」がある場合は「once」が示すとおり、同一ファイル名の場合には1度だけ読み込みます。
以下のように複数回「test.php」を読み込むプログラムの場合、2回目以降の「test.php」は読み込まれません。
1 2 3 |
require_once('test.php'); require_once('test.php'); require_once('test.php'); |
「require」と「include」の違い
requireは「必須」という意味が示すとおり、指定したファイルが存在しない場合は「Fatal Error」となります。致命的なエラーということですね。そのエラーがでると処理はその時点で止まってしまいます。require_onceの場合も同様です。
includeの場合、指定したファイルが存在しない時には「Warning」が出力されます。処理は継続されます。incluce_onceの場合も同様です。
どのように使い分けるのが良いか。
ファイルを読み込む場合というのは、自作したPHPのクラスやライブラリファイルを読み込むケースが多いかと思います。
クラスやライブラリの場合は、読み込みが失敗するとマズイでしょうから、読み込み失敗時には処理を停止するべきです。また、同一ファイルを複数回読み込むという状況があまり考えられません。
そのため、クラスやライブラリの場合は「require_once」を使います。
htmlファイルやテキストファイルの場合、ループ処理で表示するような箇所については、繰り返して同じファイルを読み込む状況がありえます。ループの中で毎回includeする仕組みが良いとは思いませんが、そのような状況では「include」でしょうか。
また、広告内容を記載したファイルを1つ作成しておき、それをサイトの2箇所以上で読み込む際などにもincludeを使いますね。
基本的には、htmlファイルやテキストファイルを読み込む場合にはincludeを使用すると思っておけばよいでしょう。
以上のことからわかるように、require、include_onceは使わなくても問題ありません。
使用時の注意点
include、include_once、require、require_onceに共通する使用時の注意点があります。
ファイルが読み込まれるときには、読み込まれるファイルの先頭で PHPモードを抜けてHTMLモードになり、最後に再びPHPモードに戻ります。
引用元:PHP Manual
まとめ
表にまとめてみました。
構文 | 同一ファイルの読み込み | ファイルが存在しない場合の影響 |
---|---|---|
require | 複数回読み込む | その時点で処理終了(Fatal Error) |
require_once | 1回のみ読み込む | その時点で処理終了(Fatal Error) |
include | 複数回読み込む | 処理継続(Warning) |
include_once | 1回のみ読み込む | 処理継続(Warning) |
クラスやライブラリの場合は「require_once」を使う。
htmlファイルやテキストファイルの場合は「include」を使う。
「require」や「include_once」は使わなくて良い。