PHP
trait tanımlama
trait anahtar kelimesiyle yeniden kullanılabilir method kümesi tanımlamayı öğrenirsin.
trait: yeniden kullanılabilir method kümesi
PHP'de bir sınıf yalnızca tek bir sınıfı miras alabilir. Ama bazen aynı davranışı aralarında akrabalık olmayan sınıflarda paylaşmak istersin. Örneğin hem Invoice hem Email bir log() metodu kullansın.
Bunun için trait kullanırsın. Trait, yeniden kullanılabilir bir method kümesidir. Tanımı şöyledir: trait Logger { public function log() { ... } }. Sınıf gibi görünür ama new ile örneklenemez.
Trait'i tanımladıktan sonra trait_exists('Logger') ile varlığını doğrulayabilirsin.
Trait gövdesi ve örnek
Trait gövdesi, sınıf gövdesine benzer. İçinde public, protected, private metotlar ve property tanımlayabilirsin. Örneğin bir Greeter trait'i selamlaşma davranışını taşısın:
trait Greeter {
public function hello(): string {
return "Merhaba";
}
}
Trait tek başına bir nesne oluşturmaz; amacı tanımlandıktan sonra başka sınıflarca kullanılmaktır. Şimdilik onu tanımlamayı ve trait_exists ile doğrulamayı öğrenelim.
Uygulama İlk trait'ini tanımla
Bir Greeter trait'i tanımla. İçinde public function hello(): string metodu olsun ve return "Merhaba"; döndürsün. Sonra echo trait_exists("Greeter") ? "tanımlı" : "tanımsız"; ile trait'in tanımlı olup olmadığını yazdır ve echo "\n"; ile satır sonu ekle.
Örnek çözümü göster
string metodu koy ve return "Merhaba"; döndür. Sonra trait_exists("Greeter") ile doğrula.
Örnek çözüm:
<?php
// Greeter trait'ini tanımla
trait Greeter {
public function hello(): string {
return "Merhaba";
}
}
echo trait_exists("Greeter") ? "tanımlı" : "tanımsız";
echo "\n";
Kendini test et
-
Hangi anahtar kelime bir trait tanımlar?
Cevabı göster
trait — Doğru. trait anahtar kelimesi bir trait tanımlar; sınıf gibi görünür ama new ile örneklenemez.
-
Trait bildirimini tamamla
trait ____ {
public function hello(): string {
return "Merhaba";
}
}
Cevabı göster
trait Greeter {
public function hello(): string {
return "Merhaba";
}
}
-
Tür ile tanımını eşleştir
- trait
- yeniden kullanılabilir method kümesi
- class
- nesne örneği oluşturur
- abstract class
- new ile örneklenemez
- interface
- sözleşme bildirir
Sıradaki ders: use ile trait kullanma