А в чем вообще будет смысл private, если до него вообще никто добраться не сможет?
В вашем примере до него добирается тот, кто имеет на это право, все правильно.
abmanimenja, вообще-то смысл private кокрастыке в том и заключается чтобы до него никто не добирался. Но как выяснилось (для меня) объекты одного класса имеют доступ к приватным свойствам и методам друг друга
Они всегда будут доступны внутри методов, но в случае private не будут доступны как Test->x, а в случае protected будут доступны в методах дочерних классов
65536, self используется для статического обращения к текущему классу, т.е. в теории, внутри класса self можно приравнять к $this. Вообще интересный вопрос)
65536, с классами такая фишка, что переменная хранит ссылку на область памяти в которой лежит объект, а не копию объекта. Т.е.
$a = new DateTime();
$b = $a;
$a->modify('+1 day'); изменит так же и $b, а что такое $this и self внутри класса? Это те же переменные со ссылками на адрес памяти текущей копии объекта. Т.е. получается что использовать "new self" или "new $this" бесполезно, т.к. это как минимум не безопасно, можно переполнить память бесконечно создаваемыми объектами внутри себя, поэтому "new self" = "self", "new $this" = $this.
Приватная переменная доступна внутри класса, в котором она объявлена.
Если вы попытаетесь обратиться к приватной или защищенной переменной вне класса, тогда уже будет ошибка.
У вас $test->x; находится внутри метода, который находится внутри класса, в котором объявлена приватная переменная х. Внутри класса приватная переменная не приватная)
pligin, ты под спайсами что ли? прочитай ответы хотя бы
что все данные переданного объекта находятся в области видимости printX(). который также в области видимости метода printX() потому что ты туда передал эти данные.
что? и из твоих слов вытекает что если куда-то передать объект, то он внезапно в области видимости метода.
65536, да, я по вашему примеру посмотрела, действительно странно немного выглядит, что в объекте одного класса можно получить доступ к приватным свойствам/методам другого объекта этого же класса, но как и вам написали выше, это объясняется областью видимости.
С одно стороны это может выглядеть вполне логично, но с другой стороны и не совсем) Для кого как. Тут надо или понять, или выучить)
VelAnna, такое поведение это выбор разработчиков языка (на что завязывать видимость, на классы или объекты). Уверен что обоснованный. Вон народ пишет что это вообще чуть ли не во всех языках так. У меня вчера от этого вселенная пошатнулась.
Теперь буду думать где это можно применять. И где можно было применить)) По крайней мере в виду буду иметь