php 5.4 Traits – Php Yeni Özellikler

Php 5.4 ile ilgili yeni özelliklerden bir tanesi trait kavramı. trait kavramının bir Türkçe karşılığını bulamadım.

Bir sınıfın birden çok miras alması durumu php’de olmayan bir durum. 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ı sınıfımızın aynı fonksiyonu kullanması gerekiyorsa, o iki sınıfın ata sınıfı olarak tanımlar, o metodu onun içine koyar, 2 farklı sınıfımızı da ondan türeterek bu konuyu halledebilirdik.

Peki ya, zaten extend ettiğimiz bir sınıf var ise, ve de 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 sınıf mevcut. 2 sınıfın extend ettiği bir sınıf daha var. (bu kodda yok) Bu durumda 2 farklı sınıfta, ana sınıfta olmayan yeni metodlar istiyorsam, sınıfın içinde use ecReflectionReturnInfo diyerek bu traiti sınıf içinde kullanılabilir hale getirmiş oluyorum.

Yani bu trait içinde yazılı metodlar sanki sınıfın çinde yazılmış public functionlar olarak davranacaklardır.

O yüzden trait kelimesini Türkçe’ye “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 ayarlamaları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

4 Comments

    php 5.4 yeni ozelikler – traits « kodluyorum

    […] php’de olmayan bir şey. Bildiğim kadarıyla sadece C++’t… Devamı için : php 5.4 yeni ozelikler – traits Share this:TwitterFacebookLike this:BeğenBe the first to like this […]

    php 5.4 yeni ozelikler – traits | Gökhan Tunçkale | Blog

    […] php’de olmayan bir şey. Bildiğim kadarıyla sadece C++’t… Devamı için : php 5.4 yeni ozelikler – traits ShareFacebookTwitterStumbleUponMoreTumblrRedditLinkedInDiggEmailPrintLike this:BeğenBe the first […]

    php 5.4 yeni ozelikler – traits « Lé Blog

    […] php’de olmayan bir şey. Bildiğim kadarıyla sadece C++’t… Devamı için : php 5.4 yeni ozelikler – traits Share :FacebookTwitterStumbleUponLinkedInLike this:LikeBe the first to like this […]

    php 5.4 yeni ozelikler – traits | Kara Kule

    […] php’de olmayan bir şey. Bildiğim kadarıyla sadece C++’t… Devamı için : php 5.4 yeni ozelikler – traits Share this:TwitterFacebookLike this:BeğenBe the first to like this post. By ahmet orsorlu […]

Bir Cevap Yazın