Ich glaub ich weiß was du meinst:
PHP-Code:
<?php
class Test
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
private function privateMethod() {
echo 'private, class: '.$this->name;
}
public function callPrivateMethod($obj)
{
return $obj->privateMethod();
}
}
$a = new Test('a');
$b = new Test('b');
$b->callPrivateMethod($a);
Hierbei wird "private, class: a" ausgegeben, ich hab also aus einem Objekt eine private Methode eines anderen Objektes (aber selbe Klasse) aufgerufen.
Der Sinn hinter den Sichtbarkeiten ist ja dass wenn ein Programmierer eine Klasse schreibt und verhindern möchte das bestimmte Werte (die nicht direkt geändert werden dürfen) eben nicht aus Versehen (oder mit Absicht) von anderen Programmierern manipuliert werden. Was aber IN der Klasse selber passiert, das kann ja der Programmierer selbst bestimmen, daher beziehen sich die Sichtbarkeiten auch auf die Klasse und nicht auf eine einzelne Instanz der Klasse.
Darüber bin ich auch zuerst gestolpert (bei Java) aber im Endeffekt ist es eigentlich klar und würde keinen Sinn machen wenn es anders wäre.