只写入序列中的最后一个变量

时间:2017-05-24 13:05:21

标签: php variables variable-assignment

我可能是我曾经遇到的最令人困惑的问题。请参阅以下代码:

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)都可以正常工作。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您正在使用variable variables,但您的代码似乎正在尝试访问成员变量。

替换它:

$this->$profile
$this->$account

有了这个

$this->profile
$this->account