0

なぜこれが機能するのですか?

echo $session->name;
require_once('test.php');
//echos the name then loads the required page

だが

var_dump($session->name);

test.phpのコードではNULLを返します。

require_once必要なページから指示した場所にすべてのコードを配置することはほとんどないと思いました。

編集

$ sessionインスタンスは、test.phpの外部で、requireの前に作成されます。test.php内に$sessionの新しいインスタンスを作成すると、機能します。それが機能することをうれしく思いますが、これはまだ私には意味がありません、誰かが説明できますか?

4

2 に答える 2

0

$session範囲外です。$sessionを初期化したスクリプトを含めます。または、$sessionのためだけにインクルードを保存するすべてのスクリプトでグローバルとして宣言します。でも使ってみません$_SESSIONか?

于 2012-07-02T04:09:40.527 に答える
-1

ばかげた質問:スクリプトのどこかでtest.phpをすでにrequire_onceしましたか?その場合、最初に$sessionを含めたときに$sessionが設定されていない可能性があります。代わりにinclude('test.php')を試しましたか?

デバッグ編集:

次のことを試して、呼び出されている順序を検証できます。

caller.php(またはあなたがそれを呼ぶもの)ファイル:

echo "Debug 1";
echo $session->name;
require_once('test.php');

test.phpの場合:

echo "Debug 2";
var_dump($session->name);

Debug1とDebug2のどちらが最初に出力されますか?

于 2012-07-02T03:59:19.007 に答える