PHP'de trait'ler, sınıflara birden fazla kalıtım sağlama yeteneği sunan bir mekanizmadır. use
anahtar kelimesi ile bir sınıfın içinde trait kullanılır. Ayrıca, insteadof
ve as
ifadeleri ile trait'ler arasında çakışmaları çözebilirsiniz.
Trait Kullanımı (use
):
<?php
// Bir trait tanımı
trait OrnekTrait {
public function traitMetodu() {
echo "Trait metodu çağrıldı.
";
}
}
// Bir sınıf tanımı ve trait kullanımı
class OrnekSinif {
use OrnekTrait;
public function normalMetod() {
echo "Normal metot çağrıldı.
";
}
}
// Sınıfı kullanarak bir örnek oluşturma
$ornek = new OrnekSinif();
// Trait ve sınıfa ait metotları çağırma
$ornek->traitMetodu();
$ornek->normalMetod();
?>
Trait'ler Arasında insteadof
ve as
Kullanımı:
<?php
// İlk trait tanımı
trait Trait1 {
public function ortakMetot() {
echo "Trait1'den ortak metot.
";
}
}
// İkinci trait tanımı
trait Trait2 {
public function ortakMetot() {
echo "Trait2'den ortak metot.
";
}
}
// Bir sınıf tanımı ve trait'leri kullanma
class OrnekSinif {
use Trait1, Trait2 {
Trait1::ortakMetot insteadof Trait2; // Trait1'den gelen metodu kullan, Trait2'yi atla
Trait2::ortakMetot as farkliIsim; // Trait2'den gelen metodu farklı bir isimle kullan
}
}
// Sınıfı kullanarak bir örnek oluşturma
$ornek = new OrnekSinif();
// İki trait'in de ortak metotlarına erişim
$ornek->ortakMetot(); // Trait1'den gelen metot
$ornek->farkliIsim(); // Trait2'den gelen metot, farklı bir isimle kullanıldı
?>
Bu örnekte, Trait1
ve Trait2
adında iki trait tanımlanmıştır. OrnekSinif
sınıfı bu iki trait'i use
anahtar kelimesi ile içine alırken, insteadof
ve as
ifadeleri ile çakışan ortak metotları nasıl çözeceğini belirtir.