在PHP类函数中使用$GLOBALS[]变量


Using $GLOBALS[] variable in PHP class function

我试图从类中分配$GLOBALS['a']变量,但没有成功。

下面是我的代码:
<?php
 $GLOBALS['a'] = "alter";
 class db_data 
 {
   public $a;
   function __construct()
   {
     $this->a = $GLOBALS['a']; 
   }
 }
 $db = new db_data;
 echo $db->$a;
?>

并产生如下错误:

注意:未定义属性:db_data::$alter.....

我试着在SO上搜索这个,但是所有的问题都是不同的,它没有解决我的问题。

答案在问题评论中,但这是为什么会发生

您不小心使用了PHP的可变变量特性。当您调用$thing->$a时,您实际上获得了$a的值(由$GLOBALS['a'] = "alter";行定义),然后获得了具有该值的$thing的属性。

正如你在评论中所说的,你应该简单地回显$db->a,因为这就是PHP属性被访问的方式

还有,小心!,如果在全局作用域的其他地方更改了$a的值,则db_data类将反映该更改,这可能是您不希望的。