所需文件中的变量范围

时间:2011-04-03 16:37:09

标签: php scope

我正在调用一个名为ajax.php的文件(来自我的浏览器进行测试)

ajax.php require_once delete.php

delete.php require_once no_direct.php

delete.php就像这样开始:

$allowed = array('group'=>'admin');
require_once(ASSETS.'/no_direct.php'); //Yes, ASSETS is defined and no_direct is being included.

在no_direct.php中我试图:

var_dump($allowed)

我只是继续出现NULL。

是否会发生这种情况,因为我们在ajax.php的require_once函数中运行,而$ allow的范围推回到GLOBAL范围,不允许我从no_delete.php访问它?

我在这里看:PHP variable defined in 'parent' file not recognized in 'required' file,只是为了勤奋。

我确信我可以使用GLOBAL关键字解决这个问题,但我希望稍微澄清一下。 PHP范围文档似乎没有回答我的问题。

它没有包含在另一个功能中,因为它被认为是这种情况。

3 个答案:

答案 0 :(得分:5)

在为require_once(ASSETS.'/no_direct.php');分配价值之前,您是否有可能已拨打$allowed

require_once(ASSETS.'/no_direct.php');
...

$allowed = array('group'=>'admin');
require_once(ASSETS.'/no_direct.php');

在这种情况下,脚本no_direct.php不应输出$allowed

输出将是:

Notice: Undefined variable: allowed in D:\wampserver\www\gim\no_direct.php on line 2
NULL 

P.S。在我的测试文件的wamp中的localhost上有我的路径

答案 1 :(得分:4)

  

是否会发生这种情况,因为我们在ajax.php的require_once函数中运行,而$ allow的范围推回到GLOBAL范围,不允许我从no_delete.php访问它?

绝对不是。

关于包含没有范围问题 唯一与范围相关的问题是用户定义的函数

因此,如果没有涉及任何功能,唯一的原因可能是某些错误/错误 - 您正在编辑/包含错误的文件,或者通过http或类似的东西包含HTML代码。只需仔细检查。

答案 2 :(得分:0)

所以我的ajax.php文件也是require_once build.php和config.php

我的build.php文件require_once no_direct.php。

正如函数所示,它只需要no_direct.php ONCE!

所以我看到的NULL来自build.php的include而不是delete.php包含的no_delete。