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

时间:2013-06-14 18:27:34

标签: php class variables globals

我正在尝试从类中分配$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,但是所有问题都不同,并没有解决我的问题。

1 个答案:

答案 0 :(得分:2)

答案在问题评论中,但这就是它发生的原因

您不小心使用了PHP的variable variables功能。当您致电$thing->$a时,您实际上获得了$ a的值(由$GLOBALS['a'] = "alter";行定义),然后使用该值获取$thing的属性。

正如您的评论中所述,您应该回复$db->a,因为how PHP properties are accessed

此外,注意!,如果$a的值在全局范围内的其他位置更改,则db_data类将反映您可能不想要的更改。< / p>