我可能是我曾经遇到的最令人困惑的问题。请参阅以下代码:
public $profile;
public $account;
function __construct(){
if(isset($_SESSION['uid'])){
$this->$profile = $_SESSION['user_profile'];
$this->$account = $_SESSION['user_account'];
echo "<script> alert('".$this->$profile->forename."'); </script>"; //Shows nothing
}else{
unset($_SESSION['user_profile']);
unset($_SESSION['user_account']);
}
}
出于某种原因,似乎要写$this->$profile
或写$this->$account
,但前提是它是最后一个。在上面的情况中,如果我将配置文件行移到帐户行之后,它将被写入。但是,在这种情况下,它不是。
两个$_SESSION
变量都是从SQL语句中检索的对象,并且它们的赋值有效,因为直接访问任一变量(例如。$_SESSION['user_profile']->forename
)都可以正常工作。
有什么想法吗?谢谢。
答案 0 :(得分:2)
您正在使用variable variables,但您的代码似乎正在尝试访问成员变量。
替换它:
$this->$profile
$this->$account
有了这个
$this->profile
$this->account