Sorry für das denglisch 
Einleitend erstmal ein bisschen abstrakter Code zur Veranschaulichung.
Mir geht um die Methode setItemProperty($itemIndex, $property) in ItemCollection. Diese Methode ruft wiederum die entsprechende Methode des betreffenden Item-Objektes auf.
Jetzt meine Frage: Kann ich es verhindern, dass die Methode direkt über das Item-Objekt aufgerufen wird, da ja setProperty($property) public access hat?
Einleitend erstmal ein bisschen abstrakter Code zur Veranschaulichung.
PHP-Code:
class ItemCollection
{
protected $items = array();
public function __construct()
{
foreach(range(0, 42) as $index)
{
$this->items[$index] = new Item($this);
}
}
public function setItemProperty($itemIndex, $property)
{
$this->items[$itemIndex]->setProperty($property);
}
}
class Item
{
protected $itemCollection = null;
protected $property = null;
public function __construct(ItemCollection $itemCollection)
{
$this->index = $index;
$this->itemCollection = $itemCollection;
}
// Dieser Aufruf soll nur über
// $ItemCollection->setItemProperty($itemIndex, $property)
// zugelassen werden
public function setProperty($property)
{
$this->property = $property;
}
}
Jetzt meine Frage: Kann ich es verhindern, dass die Methode direkt über das Item-Objekt aufgerufen wird, da ja setProperty($property) public access hat?

Kommentar