Примерный код:
Код: Выделить всё
class X {
public function moveYTo(X $x, Y $yToTransfer)
{
//добавляем к новому аггрегату
$x->addY($yToTransfer);
//удаляем из текущего
unset($this->ys[$yToTransfer]); //тут конечно не $yToTransfer а ключ
}
private function addY(Y $y)
{
//проверяем может ли y существовать в новом контексте
$this->failIfContextWrong($this, $y);
$y->changeOwnerId($this->id);
$this->ys[] = $y;
}
}
class Y {
private $ownerId;
public changeOwnerId($id)
{
$this->ownerId = $ownerId;
}
}