PHP Trait Nedir ?

Merhaba arkadaşlar. Bu yazımızda PHP'de trait kullanımına değineceğiz.

Trait kelime anlamı olarak kişisel özellik anlamına gelmektedir ama yazılımda tamamen farklı bir amaca hizmet etmektedir. Php 5.4 ile hayatımıza giren traitler bir çok alanda imdadımıza yetişmektedir.

Daha önceki yazılarımda kalıtım olayına değinmiştim. Ve bir sınıfın birden fazla sınıftan türetilemeyeceğini öğrenmiştik. Ama bazen bir sınıfın birden fazla sınıftan türetilmesine ihtiyacımız olabilir. İşte burada yardımımıza traitler yetişiyor.

PHP'de bir sınıf sadece bir ebeveynden türetilebilir.

Temel trait sözdizimi şu şekildedir.

<?php
trait TraitName {
  // özellik ve metotlar
}
?>

Bir trait özelliğini bir sınıfta kullanmak için use anahtar kelimesi kullanılır.

<?php
trait TraitName {
  // özellik ve metotlarclass MyClass {
  use TraitName;
} 
?>

Şimdi basit bir örnek yapalım.

<?php
trait zafer {
public function isim() {
    echo "Merhaba ben Zafer";
  }
}
class Selamla {
  use zafer;
}
$obj = new Selamla();
$obj->isim();
?>

Yukarda zafer adında bir ana sınıf oluşturduk. ve içine isim adında bir metot tanımladık. Aşağıdaki selamla sınıfında ise use anahtar kelimesi ile zafer sınıfından türettiğimizi bildirdik. Daha sonra $obj adında bir nesne oluşturduk Selamla sınıfından. Selamla sınıfının içinde gördüğünüz gibi isim adlı bir metot yok ama zafer sınıfından türettiğimiz için isim metotunu çağırabildik.

Çoklu Trait Kullanma

Gelelim şimdi asıl kısıma. Yukardaki örneği extends ile de yapabilirdik ama bildiğiniz gibi extends ile sadece bir sınıfta türetebilirdik. Şimdi trait ile birden çok sınıftan miras almayı göstereceğim size.

<?php
trait Insan {
  public function bilgi() {
    echo "Ad ve Soyad bilgileri bu sınıfta";
  }
}

trait Hayvan {
  public function canli() {
    echo "Hayvan bir canlıdır";
  }
}


class BilgileriGetir {
  use Insan;
}


class Canlilar {
  use Insan, Hayvan;
}

$obj = new BilgileriGetir();
$obj->bilgi();
echo "<br>";

$obj2 = new Canlilar();
$obj2->bilgi();
echo "<br>";
$obj2->canli();
?>

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.