Işlemleri yönetmek için ayrı bir modeli yöntemlerini kullanma

1 Cevap php

I 2 (veya daha fazla) modeli yöntemleri var ise, hangi do (örneğin, faturalandırma sistemi) geri çekilmesi / kayıt, ve 2 (veya daha fazla) çağıran bir kontrolörün yöntemi bu modeli yöntemleri.

Bu gibi / kullanımı 2model yöntemleri yazmak için iyi bir yol (daha iyi bunu nasıl belki, herhangi bir öneriniz) 'dir:

public function start_transaction(){
    $this->db->trans_start();
}

public function end_transaction(){
   $this->db->trans_complete();
} 

Ve denetleyicisinin yöntemi çağırır:

   public function smth(){
       //something
       $this->model->start_transaction();
       $this->model->enroll();
       //something else
       $this->model->withdraw();
       $this->model->end_transaction();
   } 

Modelin çekme () yöntemi başarısız olursa işlem, tersine dönecek?

Teşekkürler.

1 Cevap

Ben CodeIgniter için oldukça yeni, ama ben projemde işlem iş adil bir miktar yapıyor oldum.

Ancak, ben DataMapper overzealous ORM kütüphanesi kullanarak oldum - ve bu kod kütüphanesi kullanılarak işlemleri ele.

Ben yazıyorum Yani DMZ kodu (Dikkat - en iyi uygulama olmayabilir) gibi bir şey olacaktır:

public function smth() {
  $model->trans_begin();
  // assuming method returns boolean
  $enroll_success = $model->enroll();
  //something else
  // assuming method returns boolean
  $withdraw_success = $model->withdraw();
  if ($enroll_success && $withdraw_success && $model->trans_status() === TRUE)
  {
    $model->trans_commit();
  }
  else
  {
    $model->trans_rollback();
  }
}

Ben de denetleyicisi oluyor "başka bir şey" sadece enroll ve hem de idare edeceğini senin modelinde tek bir yöntem oluşturarak engeller olduğunu varsayarak yaşıyorum Bir işlem fonksiyonları çekilme.