[PHP-users 32289] 関数内からinclude_onceコール時のグローバル変数の挙動について

菊澤 正明 kikuzawa @ cyber-coo.com
2007年 6月 8日 (金) 11:18:34 JST


菊澤 と申します。

関数内から、include_onceをコールした場合に、
インクルードしたファイル内でグローバル変数を定義しているにも
関わらず、グローバル変数が未定義となってしまいます。
下記に示すコードのinc2.phpで
$GLOBALS['global2'] = "DEF";
とすれば、test.phpの未定義エラーは回避できるようですが、
inc2.php内で$global2が未定義エラーとなってしまいます。

グローバル変数のスコープがおかしくなっているように思えるのですが、
これは仕様なのでしょうか?

環境は、
Apache2.0.59
PHP5.2.0
Windows XP プロフェッショナル
です。

下記にコードを示します。

○test.php
<?php

function load_file()
{
    include_once("inc2.php");
}

include_once("inc1.php");
load_file();

print_r($GLOBALS); // global2のエントリがない
echo $global1;
echo $global2; // この変数が未定義となる

?>

○inc1.php
<?php

$global1 = "ABC";

○inc2.php
<?php

$global2 = "DEF";



--------------------------------------------
菊澤 正明  mailto:kikuzawa @ cyber-coo.com



PHP-users メーリングリストの案内