我试图从类中分配$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类将反映该更改,这可能是您不希望的。