Beware: Visibility works on a per-class-base and does not prevent instances of the same class accessing each others properties!
<?php
class Foo
{
private $bar;
public function debugBar(Foo $object)
{
echo $object->bar, "\n";
}
public function setBar($value)
{
$this->bar = $value;
}
public function setForeignBar(Foo $object, $value)
{
$object->bar = $value;
}
}
$a = new Foo();
$b = new Foo();
$a->setBar(1);
$b->setBar(2);
$a->debugBar($b); $b->debugBar($a); $a->setForeignBar($b, 3);
$b->setForeignBar($a, 4);
$a->debugBar($b); $b->debugBar($a); ?>