class C1 {
private $v;
public function __construct($value)
{
$this->v = $value;
}
/**
* 打印私有成员$v
*/
private function printValue()
{
echo $this->v;
}
/**
* 访问属性,和方法
* @param C1 $class
*/
public function mutualValues(C1 $class)
{
var_dump($class->v);
$class->v = 'oooo3';
var_dump($class->v);
$class->saySomething();
}
/**
* 打印一句话
*/
private function saySomething()
{
echo 'accessed private method';
}
}
$o1 = new C1('object1');
$o1->mutualValues(new C1('object2'));
以上程序会输出:
string(7) "object2"
string(5) "oooo3"
accessed private method
同一个类的对象即使不是同一个实例也可以互相访问对方的私有与受保护成员。
这是由于在这些对象的内部具体实现的细节都是已知的。