PHPで任意のファイルをインクルードして利用する場合、
includeやrequire文を使用します。
これらは、以下の例のように関数の中で使用することも可能です。
[php]
/*——–[func1.php]——–*/
function func1($a){
$x = 2;
return $a * $x;
}
/*——–[test1.php]——–*/
function test1(){
include ‘func1.php’;
return func1(10);
}
echo test1(); // 20
[/php]
上記のような単純な例では何も問題はありませんが、呼び出される側のスクリプトで
グローバル変数を扱っていると、少し問題が起きる場合があります。
[php]
/*——–[func2.php]——–*/
$x = 2;
function func2($a){
global $x;
return $a * $x;
}
/*——–[test2.php]——–*/
function test2(){
include ‘func2.php’;
return func2(10);
}
echo test2(); // 0
[/php]
上の例では、func2.phpで定義されている関数の外で「$x = 2」と宣言し、
func2関数の中でグローバル変数として扱っています。
ですが、このファイルが別の関数の中からincludeされている場合、
「$x = 2」の部分が呼び出し元の関数(test2)内で定義されたローカル変数となり、
グローバル変数としての$xは未定義(NULL)となります。
そのため、関数内でincludeを行う場合は、グローバル変数がどのように
使用されているかを十分に確認する必要があります。
特別な理由が無ければ、なるべく関数の外でincludeを行う方が無難です。