直接更改PHP的$ GLOBALS数组是一种好习惯吗?

时间:2015-03-09 13:16:56

标签: php globals

PHP的$GLOBALS数组提供对所有全局变量的访问,例如

<?php
$foo = 'hello';
function myFunc() {
  echo $GLOBALS['foo']; // prints "hello"
}
?>

现在我必须处理来自其他人的一些代码,这些代码直接向数组添加元素以使其全局可用(没有相应的变量),如下所示:

<?php
function doSomething() {
  // $newData is NOT existing anywhere!
  $GLOBALS['newData'] = 'Hello World!';
  // now $GLOBALS['newData'] is available anywhere else w/o actual variable
}
?>

到目前为止,我从未见过$GLOBALS阵列的这种特定用法,并且想知道它是否被认为是“安全”或“好”? PHP manual没有说明写入这个数组,只是关于从中读取数据。

2 个答案:

答案 0 :(得分:-1)

意见或许,但如果您正在寻找定义用于应用程序其他部分的常量,我认为最好使用define而不是$ GLOBALS数组。

PHP:define - Manual

答案 1 :(得分:-3)

<?php
function doSomething() {
  $_POST['__newData'] = 'Hello World!';
}

doSomething();
echo $_POST['__newData'];
?>