Не баг ли это?

aergaerhaer

Новичок
PHP:
class Exam1
{
	private $id;
	
	public function __construct()
	{
		$this->id = 5;
	}
	
	public function getObj()
	{
		$dd = new Exam1();
		$dd->id = 54;
		return $dd;
	}
	
	public function getId()
	{
		return $this->id;
	}
	
}

$d = new Exam1();
echo $d->getId();
echo '<br/>';
echo $d->getObj()->getId();
в getObj() можно изменять приватное свойство другого объекта

результат:
5
54
 

Redjik

Джедай-мастер
Нет не баг, код работает так как ты его написал.
Вопросом в другом, хотел ли ты, чтобы он так работал?
 

aergaerhaer

Новичок
в принципе да, меня это устраивает, пока...
а дальше не знаю.

а где на php.net можно убедится что это не баг?
 

Redjik

Джедай-мастер
http://php.net/manual/ru/language.oop5.visibility.php

Видимость из других объектов
Объекты одного типа имеют доступ к элементам с модификаторами private и protected друг друга, даже если не являются одним и тем же экземпляром. Это объясняется тем, что реализация видимости элементов известна внутри этих объектов.
но вообще советую все прочитать...
 
Сверху