0

我正在尝试$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 上搜索这个,但所有问题都不同,它并没有解决我的问题。

4

1 回答 1

2

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

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

如您的评论中所述,您应该简单地 echo $db->a,因为这就是访问 PHP 属性的方式

还有,小心!,如果 的值$a在全局范围内的其他地方发生更改,您的 db_data 类将反映您可能不想要的更改。

于 2013-06-14T18:46:17.910 回答