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

愚蠢的问题:您是否已经在脚本中的其他地方 require_once'd test.php?如果是这样,那么当您第一次包含它时,可能没有设置 $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);

哪个先打印,Debug 1 还是 Debug 2?

于 2012-07-02T03:59:19.007 回答