0

問題は、「private $json」を宣言した後、コンストラクター $json または $this->json で使用する必要があるかどうかです。

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

3 に答える 3

2

ここで使用する必要があります$this->。そうしないと、インスタンスに割り当てるのではなく、コンストラクターの実行後に失われるコンストラクターでローカル変数を作成するだけです。PHPにはオプション$thisはありません。常に指定する必要があります。

于 2012-11-26T17:35:15.520 に答える
0

どちらの方法でも使用できますが、 に割り当てた後は、$this->jsonその値を引き続き使用することをお勧めします。

コンストラクターに他の操作またはメソッド呼び出しがある場合、それらのメソッドは に依存するように記述される可能性があるという考えです$this->json

インスタンス変数を早い段階で設定し、設定後に排他的に使用するのが私の習慣です。

于 2012-11-26T17:29:56.783 に答える
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;
  }
}
于 2012-11-26T17:31:49.910 に答える