Конструктор и этот указатель

Вопрос: после объявления "private $json" я должен использовать в конструкторе $ json или $this->json?

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

3 ответа

Вы должны использовать $this-> здесь, иначе вы не назначаете его экземпляру, а просто создаете локальную переменную в конструкторе, которая исчезнет после запуска конструктора. Там нет дополнительного $this в php вы всегда должны указывать это.

Если $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;
  }
}

Вы можете использовать его в любом случае, но после назначения $this->jsonЯ бы порекомендовал продолжать использовать это значение.

Идея состоит в том, что если ваш конструктор имеет другие операции или вызовы методов, эти методы могут быть написаны так, чтобы зависеть от $this->json,

Моя практика - устанавливать переменные экземпляра рано и использовать их исключительно после того, как они были установлены.

Другие вопросы по тегам