Php Trait nedir ?

Merhaba, bu makalemizde Php 5.4 ile gelen “Trait” mantığından bahsedeceğiz. Oldukça kullanışlı olan Traitleri birçok yerde kullanabilirsiniz. Trait’in Türkçe karşılığı “Nitelikler” (en azından php.net bu şekilde çevirmiş) olarak çevrilebilir.

Traitler ile multi inheritance yani çoklu kalıtım yapmamızı sağlıyor. Traitlerden önce böyle bir imkanımız bulunmuyordu. Örnekler ile beraber daha iyi kavrayacağınıza eminim.

Not: Bu makale Php’de Oop yapısına hakim kişiler içindir.

Örnek Traitlerimizi oluşturalım.

trait benKimim
{
    public function isimSoyad()
    {
        return 'Cihan Aksoy';
    }
    
    public function ilVeIlce()
    {
        return 'Konyaaltı / Antalya';
    }
    
    public function dogumTarihi()
    {
        return '05-06-1985';
    }
}

Şimdi bu traitimizi bir class’da kullanalım.

class CihanAksoy {
    use benKimim;
}

$cihanAksoy = new CihanAksoy();
echo $cihanAksoy->isimSoyad();
echo $cihanAksoy->ilVeIlce();
echo $cihanAksoy->dogumTarihi();

Bir sınıfda birden fazla trait kullanabilirsiniz. Yukarıda verdiğimiz örneği farklı traitlerde yapalım.

trait adimNe
{
    public function isimSoyad()
    {
        return 'Cihan Aksoy';
    }
}

trait nereliyim
{
    public function ilVeIlce()
    {
        return 'Konyaaltı / Antalya';
    }
}

trait neZamanDogdum
{
    public function dogumTarihi()
    {
        return '05-06-1985';
    }
}

class CihanAksoy
{
    use adimNe, nereliyim, neZamanDogdum;
}

$cihanAksoy = new CihanAksoy();
echo $cihanAksoy->isimSoyad();
echo $cihanAksoy->ilVeIlce();
echo $cihanAksoy->dogumTarihi();

Ayrıca traitleri iç içe kullanabilirsiniz. Yukarıdaki örneği biraz daha değiştirelim

trait adimNe
{
    public function isimSoyad()
    {
        return 'Cihan Aksoy';
    }
}

trait nereliyim
{
    use adimNe;
    
    public function ilVeIlce()
    {
        return 'Konyaaltı / Antalya';
    }
}

trait neZamanDogdum
{
    use nereliyim;
    
    public function dogumTarihi()
    {
        return '05-06-1985';
    }
}

class CihanAksoy
{
    use neZamanDogdum;
}

$cihanAksoy = new CihanAksoy();
echo $cihanAksoy->isimSoyad();
echo $cihanAksoy->ilVeIlce();
echo $cihanAksoy->dogumTarihi();

Örneği incelerseniz hepsini iç içe kullandım ve yine sonuç aynı oldu. Ayrıca traitlerde visibility (private, protected, public) özelliklerini, parent:: ve self:: tanımlamalarını kullanabilirsiniz. Traitler ile yapabilecekleriniz hayal gücünüze kalmış.

Traitlerin birçok kullanım örneği var. Burada hepsine değinmedim ancak PHP: Nitelikler sayfasından tüm kullanımlarını görebilirsiniz.

Bir sonraki makalede görüşmek üzere


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.