0
私は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 ...
}
ので、注文モジュールは、単に/更新エンティティを保存するために(モデル\順)モデルで構成されてい、エンティティ(Entity \ Order)およびサービス(Service \ Order)を使用して注文/チェックアウトを処理します。
私はそれは良いアイデアですか、私は注文プロセスを分けて、それをより抽象的にするべきだと思います。上記のコードははっきりと見えますが、実際にはif-else-throwステートメントが数多くあり、コードは非常に複雑で読めないようです。
質問にコードやディレクトリ構造を追加して、あなたが試したことを知り、より効果的に手助けをすることができます。これを読んで数分を過ごしてください:http://stackoverflow.com/help/how-to-ask – Aaron