İş desen, alıcılar, belirleyiciler ve sözleşmeler (PHP) birim

0 Cevap php

Ben başlığı bu soruyu açıklamak için en iyi yolu ise emin değilim.

Bu kitap - http://apress.com/book/view/9781590599099 - Çalışma desen Birimi bir uygulama göstermektedir. Bu gibi küçük bir şey gider.

class UoW(){
   private array $dirty;
   private array $clean;
   private array $new;
   private array $delete;

   public static function markClean(Entity_Class $Object){
   //remove the class from any of the other arrays, add it to the clean array
   }

   public static function markDirty(Entity_Class $Object){
   //remove the class from any of the other arrays, add it to the dirty array
   }

   public static function markNew(Entity_Class $Object){
   //add blank entity classes to the new array
   }

   public static function markDelete(Entity_Class $Object){
   //remove the class reference from other arrays, mark for deletion
   }

   public function commit(){
   //perform all queued operations, move all objects into new array, remove any deleted objects
   }
}

class MyMapper(){
  public function setName($value){
     $this->name = $value;
     UoW::markDirty($this);//here's where the problem is
   }
} 

(Bir an için statik aramalar ve bağımlılıkları sorunları almamak)

Yazar, bu uygulama, ilgili UOW işaretleme yöntemleri eklemek ve desen bu seçmeli onurlandıran hatalara yol açabilir için kodlayıcı gerektirdiğini belirtiyor. Şimdi, beton Erişgeçler artılarını ve eksilerini tahta alarak, belki de böyle UOW çağırma otomatik olabilir:

public function __set($key,$value){
   //check to see if this is valid property for this class
   //assuming the class has an array defining allowed properties 
   if(property_exists($this,$key)){
       $this->$key = $value;
       UoW::markDirty($this);

       /*
       * or alternatively use an observer relationship 
       * i.e. $this->notify();
       * assuming the UoW has been attached prior to this operation
       */
      }
   } 

Yani, benim soru nasıl bir etki alanı nesnesi özelliklerini ayarlarken uygun UOW yöntemi çağrıldı garanti hakkında gitmek istiyorsunuz, değil mi?

0 Cevap