PHP では、include と require の関数は混同されやすいです。以下では、古典的な例を使用して、それらの違いを詳しく説明します。
データベースに頻繁にアクセスする場合は、接続ステートメントを
con_db.php
<?php
ファイルに書き込むことができます。
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
実際のアプリケーションでは、プログラム内でこのファイルを呼び出すことができます。
たとえば、 require("con_db.php") または include("con_db.php)
、この 2 つの関数の効果はほぼ同じです。
ただし、
次のようにfilename.php
<?php
を使用すると、
require("con_db.php")
関数 myfun($par1,$par2)
{データベース処理のステートメントが含まれています}
……
myfun($par1,$par2);
……
myfun($p1,$p2);
?>
myfun に達すると、関数内で外部変数を取得できないため、ファイルは実行を続けることができません (include の場合も同様)。 $dbh が変数として関数に渡される場合を除きます。これにより、関数の呼び出しが複雑になります。
この問題は、関数内に require または include を入れることで解決できます。
include を使用すると、ファイルの最初の関数呼び出しは正常に実行されますが、2 番目の呼び出しは実行されません。これは、データベースを閉じないと再度開くことができないためです。つまり、con_db.php が 2 回実行されます。 include を require に置き換えれば、すべて問題ありません。
つまり、require はプリスキャンに似ており、プログラムが実行されるとき、関数の内部または外部に関係なく、require ファイルが最初に 1 回だけ実行されます。そして、 include は実行されるたびにファイルを呼び出します。つまり、この実行後、次にこの時点まで実行されるときに、再度実行されます。
したがって、ループ内に一度だけ実行したい特定のステートメントがある場合は、それらを require で含めるだけで済みます。