Php 访问通过解码JSON字符串创建的对象属性时为空值

Php 访问通过解码JSON字符串创建的对象属性时为空值,php,Php,在我的PHP脚本中,我需要解码一个Json字符串,然后将解码后的值传递给一个类。比如: index.php $params = json_decode('input'); $obj = new User(); $obj->setParams($params); $obj->Register(); class.php class User{ private $mParams; public function setParams($params) $mParams = $pa

在我的PHP脚本中,我需要解码一个Json字符串,然后将解码后的值传递给一个类。比如:

index.php

$params = json_decode('input');
$obj = new User();
$obj->setParams($params);
$obj->Register();
class.php

class User{
private $mParams;

public function setParams($params)
    $mParams = $params;
}

public function Register(){
    $username = $mParams->{'username'};
    $password = $mParams->{'password'};
}
....
}
问题是,在Register()中,当我打印$username和$password时,我得到了NULL。但是我确信从Json解码的$params不是空的,因为如果我用setParams打印它,我可以得到用户名和密码。而且,如果我直接将$params转移到Register()中,一切都很好

所以我觉得奇怪,为什么我不能将$params设置为类的成员,然后调用类的成员函数来访问它

谢谢

$this->mParams->username
 ^^^^^^

要访问对象的属性,请使用
$this
。另外,不需要括号中的字符串语法。

在php中设置对象的成员变量时,必须以
$this->
作为前缀,以将它们与局部变量区分开来。你想要:

class User{
  private $mParams;

  public function setParams($params)
      $this->mParams = $params;
  }

  public function Register(){
      $username = $this->mParams->{'username'};
      $password = $this->mParams->{'password'};
      echo $username . " : " . $password;
  }
  ....
}