我尝试使用$ GLOBALS创建一个超全局变量。
test.php的
<?php
$GLOBALS['test']='hello';
header("location:test3.php");
?>
这是test3.php
<?php
var_dump($GLOBALS);
echo $GLOBALS['test'];
?>
我得到的输出是
array(5) { ["GLOBALS"]=> *RECURSION* ["_POST"]=> array(0) { } ["_GET"]=>
array(0) { }["_COOKIE"]=> array(1) {"PHPSESSID"]=>string(26)"oer267anbfrrhtj64lpqrocdd3"}
["_FILES"]=> array(0) { } }
$ GLOBAL ['test']未设置。
但是当我在test.php中尝试var_dump时,我发现$ GLOBAL数组有一个值为'hello'的键'test'。
这种行为的原因是什么?
此外,我希望使用$ GLOBAL创建一个超全局数据库连接对象。它建议使用吗?
答案 0 :(得分:1)
尝试使用$ _SESSION而不是$ GLOBALS来设置有状态变量。
<?php
session_start();
$_SESSION['test'] = 'hello';
header("location:test3.php");
// test3.php
session_start();
var_dump($_SESSION);
?>
就$ GLOBAL数据库连接而言,最好的办法是阅读与数据库连接相关的单例变量。我不建议在$ GLOBALS数组中存储任何内容。
快速谷歌搜索数据库单例返回了几个页面,但这里是decent one。