我正在调用一个名为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范围文档似乎没有回答我的问题。
它没有包含在另一个功能中,因为它被认为是这种情况。
答案 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。