Jun 09, 2013 09:21
Смотрите, какая прелесть:
class A {
private $foo = 1;
function bar($f){
return $f->foo;
}
}
$a = new A;
$b = new A;
print $b->bar($a);
выводит 1.
Проверено в 5.3.26 и 5.4.16, а также с protected-полем.
В лучших традициях.
UPD. Понятно, что "а зачем вы читаете из поля, если знаете, что оно приватное?". Сложности могут начаться, когда для приватного свойства определены __set и __get, либо для приватной функции __call. Пример:
class A {
protected $foo = 'foo';
function __get($name){
return "changed $name";
}
function bar($f){
return $f->foo;
}
}
$a = new A;
print $a->foo;
$b = new A;
print $b->bar($a);