我正在尝试从类中分配$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,但是所有问题都不同,并没有解决我的问题。
答案 0 :(得分:2)
答案在问题评论中,但这就是它发生的原因
您不小心使用了PHP的variable variables功能。当您致电$thing->$a
时,您实际上获得了$ a的值(由$GLOBALS['a'] = "alter";
行定义),然后使用该值获取$thing
的属性。
正如您的评论中所述,您应该回复$db->a
,因为how PHP properties are accessed
此外,注意!,如果$a
的值在全局范围内的其他位置更改,则db_data类将反映您可能不想要的更改。< / p>