PHP ile Trait'ler (traits)

Tamer tarafından, 05 01 2013 03:21:00 tarihinde yayınlandı.

Uzun bir aradan sonra yeniden merhaba, Bu paylaşımında sizlere PHP 5.4.0 versiyonu ile birlikten gelen "traits" özelliğinden bahsedeceğim.

Trait ?

"trait" bir sınıf gibi oluşturuluyor fakat bir sınıf gibi kullanamıyorsunuz. Kullanım yeri için kafamızda birşeylerin belirmesi için bir örnek verecek olsaydım; ortak fonksiyon toplama alanı diyebilirdim. Tabiki bu basit bir anlatış olacak.Tabi örnek kullanım şeklini görmeden anlaşılması biraz karışık olabilir.


NORMAL KULLANIM ŞEKLİ


trait tavuklar {
        public function kirmizi() {
	        echo "kirmizi tavuk!";
	    }
	}
	 
	trait horozlar {
	    public function siyah() {
	        echo "siyah horoz!";
	    }
	}
	 
	class kumes {
	    use tavuklar, horozlar;
	}
	 
	$ornek = new kumes;
	$ornek->kirmizi(); // kirmizi tavuk!
	$ornek->siyah(); // siyah horoz!


ELEMELİ KULLANIM ŞEKLİ

 
trait tavuklar { 
	    
  public function kirmizi() { 	        
    echo "kirmizi tavuk!"; 	    
  } 
            
  public function siyah(){                
    echo "siyah tavuk!";             
  } 	
}
 	  	
trait horozlar {  
           
  public function kirmizi() {
    echo "kirmizi horoz!";
  } 	  
  
  public function siyah() {
    echo "siyah horoz!";
  } 	
} 	
  	
class kumes { 	    
  use tavuklar, horozlar{             
    horozlar::kirmizi insteadof tavuklar;             
    horozlar::siyah insteadof tavuklar;             
    tavuklar::kirmizi as kirmizitavuk;            
  } 	
} 	  	

$ornek = new kumes; 	

$ornek->kirmizi();  // kirmizi horoz! 	
$ornek->siyah();    // siyah horoz!         
$ornek->kirmizitavuk(); // kirmizi tavuk! 
 

Yukardaki örnekte mukerrer fonksiyon isimlerinin kullanılabilir haklarını "use" kısmında belirtiyoruz. ulaşamadımız tavuklar trait'inin kirmizi tavuklarına ulaşmak içinde "tavuklar::kirmizi as kirmizitavuk" örnekteki kombinasyonu sağlıyoruz.

STATIC KULLANIM ŞEKLİ


trait statikOrnek {
    public static function foo() {
        return 'Merhaba Dünya!';
    }
}

class ornek {
    use statikOrnek;
}

ornek::foo(); // Merhaba Dünya

Etiketler : Yazılım, PHP, Genel