65536
@65536

Почему доступны приватные свойства?

Вот в таком случае.

class Test
{
    private $x = 123;
    
    public static function create()
    {
        $test = new self;
        
        print $test->x;
    }
}

Test::create(); // 123

https://3v4l.org/i8FF2

Как это называется, что можно почитать об этом?
  • Вопрос задан
  • 415 просмотров
Пригласить эксперта
Ответы на вопрос 2
@levantez
Они всегда будут доступны внутри методов, но в случае private не будут доступны как Test->x, а в случае protected будут доступны в методах дочерних классов
Ответ написан
AnnaVel
@AnnaVel
Приватная переменная доступна внутри класса, в котором она объявлена.
Если вы попытаетесь обратиться к приватной или защищенной переменной вне класса, тогда уже будет ошибка.

У вас $test->x; находится внутри метода, который находится внутри класса, в котором объявлена приватная переменная х. Внутри класса приватная переменная не приватная)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы