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()も参照下さい。