Я ищу лучший способ организовать процесс заказа/оформления заказа в zf2.ZF2 лучший способ организовать процесс оформления заказа
Какой шаблон лучше всего подходит для этой цели? В настоящее время я просто модуль заказа с сервисом, который обрабатывает заказ в основном ::order()
метода, завернутом в сделке, которая выглядит как:
// Simplified, somewhere wrapped in transaction
public function order($data)
{
// Get Order model
$orderModel = $orm->get('Model\Order');
// Create order entity
$order = new Order();
if (!$orderModel->validate($data)) {
// Show error fields there
throw new Exception('Order validation failed');
}
// Form order items from products
if (!empty($data['products'])) {
foreach ($data['products'] as $product) {
$orderItem = new OrderItem();
$orderItem = $orderModel->patch($product);
$orderModel->save($orderItem);
$order->addOrderItem($orderItem);
}
}
if (!empty($data['card_id'])) {
// Process payment transaction
$this->paymentService->createTransactionByCardId($data['card_id']);
}
// Calculate totals, select shipping and etc. in the same manner ...
}
Так модуль Order просто состоит из модели (Model \ Order), чтобы сохранить/объект обновления , сущность (Entity \ Order) и услугу (Service \ Order) для обработки заказа/проверки.
Я думаю, что это хорошая идея или я должен отделить процесс заказа и сделать его более абстрактным в соответствии с некоторым шаблоном (может быть, стратегия или что-то в этом роде)? Вышеприведенный код выглядит четко, но в реальности есть много команд if-else-throw, и код выглядит очень сложным и нечитаемым.
Добавить код или структуру каталогов на ваш вопрос, чтобы мы знали, что вы пробовали, и можете помочь вам более эффективно. Проведите несколько минут, читая это: http://stackoverflow.com/help/how-to-ask – Aaron