Конструктор и этот указатель
Вопрос: после объявления "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
,
Моя практика - устанавливать переменные экземпляра рано и использовать их исключительно после того, как они были установлены.