include 文は指定されたファイルを読み込み、 評価します。
この処理は、include 文を処理する度に行われます。 このため、異なった複数のファイルを読み込むためにループ構造の中で include を使用することができます。
1
2 $files = array ('first.inc', 'second.inc', 'third.inc');
3 for ($i = 0; $i < count($files); $i++) {
4 include $files[$i];
5 }
6 |
include は、 require とは 異なっています。つまり、include 文はその文の処理が行われる度に (実行時においてのみ)再度評価されますが、 require 文は、 (例えば、条件が FALSE となる if 文の中のように) 要求されたファイルの内容が評価されるかどうかにかかわらず 最初に読み込まれたファイルで置き換えられます。
include は 特殊な言語構造なので、条件ブロックの内部にある時には、命令ブロックの中に 入れておく必要があります。
1
2 /* 以下は誤っており、希望通りに動作しません。 */
3
4 if ($condition)
5 include($file);
6 else
7 include($other);
8
9 /* 以下が正解です。 */
10
11 if ($condition) {
12 include($file);
13 } else {
14 include($other);
15 }
16 |
ファイルが評価された際、パーサーは "HTML-mode" となっており、 PHP 開始タグ (<?) に合うまで、ファイルの内容が出力されます。
include() およびrequire() は共に 実際にターゲットファイルの中身を呼出側のファイル自体に読みこむことに 注意してください。ターゲットを HTTP のようなものを経由してコールする わけではありません。よって、 インクルードされるファイルは効率的に呼出側のファイルの一部になるため、 インクルードされた側のスコープで設定された全ての変数はインクルード されるファイルの中でも自動的に利用可能です。
1 2 include( "file.inc?varone=1&vartwo=2" ); /* 動作しません */ 3 4 $varone = 1; 5 $vartwo = 2; 6 include( "file.inc" ); /* $varone および $vartwo は file.inc で利用可能です */ 7 8 |
readfile(), require(), virtual()も参照下さい。