CodeBlanks Logo Icon CodeBlanks

trait tanımlama

PHP kursu · Orta seviye · Ders 59/115

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

  1. Hangi anahtar kelime bir trait tanımlar?

    • trait
    • class
    • module
    • mixin
    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.

  2. Trait bildirimini tamamla

    trait ____ {
        public function hello(): string {
            return "Merhaba";
        }
    }
    Cevabı göster
    trait Greeter {
        public function hello(): string {
            return "Merhaba";
        }
    }
  3. 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

Orta seviye bölümündeki tüm dersler