构造函数和this指针

时间:2012-11-26 17:26:17

标签: php constructor this-pointer

问题是:在声明“private $ json”后我应该在构造函数$ json或$ this-> json中使用?

class Controller{
private $json;
 private $data;
  function __construct(){
  $json=json_decode(base64_decode($_POST['json']));
  }
}

3 个答案:

答案 0 :(得分:2)

必须在这里使用$this->,否则你不是将它分配给实例,只是在构造函数中创建一个局部变量,它将在构造函数运行后消失。在php中没有可选的$this,你必须始终指定它。

答案 1 :(得分:0)

您可以使用它,但在将其指定给$this->json后,我建议继续使用该值。

这个想法是,如果你的构造函数有其他操作或方法调用,那么这些方法可能会被编写为依赖于$this->json

我的做法是尽早设置实例变量,并在设置后专门使用它们。

答案 2 :(得分:0)

除非$ json是一个本地变量,不应该影响$ this-> json,否则我建议你在分配时使用$ this-> json。澄清:

class Controller{
private $json;
 private $data;
  function __construct(){
      $this->json = json_decode(base64_decode($_POST['json']));
      echo $this->json;
  }
}

比以下更有意义:

class Controller{
private $json;
 private $data;
  function __construct(){
       $json = json_decode(base64_decode($_POST['json']));
       $this->json = $json;
       echo $json;
  }
}