Lo que te recomiendo es que en lugar de estar pasando el objeto por parametro, uses Singleton (asi inclusive usas solo 1 objeto) y no tienes el problema de estarlo pasando, creando, etc.
Asi solo usas tu objeto DB donde lo necesites en tu carrito de compra:
Código PHP:
public function addToCart( $id ) {
$db = DB::getInstance();
// Hacer algo con $db
}