所需文件中的变量范围

Sen*_*lez 2 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.
Run Code Online (Sandbox Code Playgroud)

在no_direct.php中我试图:

var_dump($allowed)
Run Code Online (Sandbox Code Playgroud)

而我只是继续出现NULL.

这是否因为我们在ajax.php的require_once函数内运行而且$ allowed的范围推回到GLOBAL范围而不允许我从no_delete.php访问它?

我在这里看:'父'文件中定义的PHP变量在'required'文件中无法识别,只是为了勤奋.

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

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

Wh1*_*Ck5 5

require_once(ASSETS.'/no_direct.php');在您分配价值之前,您是否有可能已经召集过$allowed

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

$allowed = array('group'=>'admin');
require_once(ASSETS.'/no_direct.php');
Run Code Online (Sandbox Code Playgroud)

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

输出将是:

Notice: Undefined variable: allowed in D:\wampserver\www\gim\no_direct.php on line 2
NULL 
Run Code Online (Sandbox Code Playgroud)

ps我的测试文件在wamp的localhost上有我的路径

  • 不错的猜测!要把它添加到我的`*_once`仇恨列表中! (2认同)