18 Mart 2012 Pazar

php 5.4 yeni ozelikler - traits

Php 5.4 ile ilgili yeni özelliklerden bir tanesi trait kavramı. trait denilen şeyin bir türkçe karşılığını bulamadım. Bir class'ın birden çok miras alması durumu php'de olmayan bir şey. Bildiğim kadarıyla sadece C++'ta var. Traitler bizi birden çok miras alma durumlarına benzer ihtiyaçları çözmek için getirilmiş bir yenilik gibi gözüküyor. Normalde 2 adet farklı classımız aynı bir fonksiyonu kullanması gerekiyorsa, o iki class'ın parent sınıfı olarak tanımlar, o metodu onun içine koyar, 2 farklı classımızı da ondan türeterek bu konuyu halledebilirdik. Peki ya, zaten extend ettiğimiz bir class var ise, ve e ekleyeceğimiz metod ile alakasız ise o zaman ne yapacağız? Bu durumda duplicate (tekrarlayan) kod yazmamak için traitleri kullanmamız faydalı olabilir. Php'nin sitesindeki örneği vereyim.
  < ?php  trait ezcReflectionReturnInfo {      public function getReturnType() { /*1*/ }      public function getReturnDescription() { /*2*/ }  }    class ezcReflectionMethod extends ReflectionMethod {      use ezcReflectionReturnInfo;      /* ..bişeyler bişeyler... */  }    class ezcReflectionFunction extends ReflectionFunction {      use ezcReflectionReturnInfo;      /* .. bişeyler bişeyler... */  }  ?>  
Yukarıda 1 trait , 2 class mevcut. 2 classın extend ettiği bir class daha var. (bu kodda yok) Bu durumda 2 farklı classta, ana classta olmayan yeni metodlar istiyorsam, classın içinde use ecReflectionReturnInfo diyerek bu traiti class içinde kullanılabilir hale getirmiş oluyorum. Yani bu trait içinde yazılı metodlar sanki classın çinde yazılmış public functionlar olarak davranacaklardır. O yüzden trait kelimesini türkçeye "sınıfçık" olarak çeviriyorum :) Bu mantıkta traitler içinde değişken, static function, vb.. gibi şeyler tanımlayabiliyoruz. Ayrıca Hangisini hangisinin yerine kullanacağının ayarllamalarını da detaylı yapabiliyoruz. Henüz deneyemediğim ve yazılımda ihtiyaç olarak ne şekilde kullanabilceğimin tam oturmadığı diğer bu konular hakkında okumaya devam etmek için php'nin kendi sitesinden devame edebilirsiniz. http://tr2.php.net/traits Devamı için : php 5.4 yeni ozelikler - traits

Hiç yorum yok:

Yorum Gönder

Yorumunuzu esirgemeyiniz..