##需求
test.php里有一个变量$_auth = ‘222’;使其可以在另一个文件index.php里访问
1 2 3 4 5 6 7 8 9 10 11 12
| function test(){ require_once 'test.php'; var_dump($_auth); } class Test{ static function testRequire(){ require_once 'test.php'; var_dump($_auth); } } test(); Test::testRequire();
|
testRequire()方法报错的原因在于:require_once仅包含文件一次,而且在test()函数里包含,$_auth变量的作用域就仅限于函数体内了。
既然有作用域的问题,那么global后又如何呢?修改程序如下(仅添加了一行global $_auth;):
1 2 3 4 5 6 7 8 9 10 11 12 13
| function test(){ require_once 'test.php'; var_dump($_auth); } class Test{ static function testRequire(){ require_once 'test.php'; global $_auth; var_dump($_auth); } } test(); Test::testRequire();
|
看来虽然global可以暂时使用外部变量,但是再隔一个函数体的话是不行的。(只能拿屋子外面的东西,而外面其它屋子里的东西就不行了)。有程序为证:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $\_auth = '1111'; function test(){ require_once 'test.php'; var_dump($_auth); } class Test{ static function testRequire(){ require_once 'test.php'; global $_auth; var_dump($_auth); } } test(); Test::testRequire();
|
好了,继续看这种问题怎么解决吧:
换require_once为require
改所有$_auth为$GLOBALS[‘AUTH‘]