Есть следующие объекты:
- Товар (Product);
- Корзина (Cart), которая хранит позиции;
- Позиция (Cart Position) представляет собой структуру формата (id товара, опции товара, хеш позиции по которому она доступна в корзине). Позиция сохраняется в сессию, поэтому не хранит экземпляр конкретного товара, а только его ID.
Учитывая, что позиция не хранит экземпляра конкретного товара, товар я запрашиваю из базы всякий раз когда работаю с корзиной: вывод на странице заказа, проверка наличия товара при оформлении заказа и т.д. Мне нужно иметь структуру которая бы связывала Корзину, Позицию и экземпляр Товара из этой позиции. Примерно так:
class CartItem {
protected $ownerCart;
protected $position;
protected $product;
public function __construct(Cart $ownerCart, CartPosition $position, ProductInterface $product) {
$this->ownerCart = $ownerCart;
$this->position = $position;
$this->product = $product;
}
// Тут геттеры корзины, позиции и товара
Как посоветуете назвать такую структуру чтобы отразить её суть: это связующая структура, элементы которой имеют смысл по отдельности, но при этом объединение этих элементов также имеет свой смысл и назначение.
Мои первые варианты такие: CartItemInstance, CartItemReference, CartItemAggregate.