PHP'de OOP'de Erişim Değiştiriciler ve Traits

Dikkatinizi şu noktaya çekmek isteriz ki, trait'lerin kullanımı kalıtım değildir. Kalıtımda private metotlar ve özellikler kalıtımla alınmaz.

Trait'lerde ise durum tam tersidir: trait'i kullanan sınıfta, hem public hem de private metotlar ve özellikler kullanılabilir olacaktır.

Bir örnek üzerinden inceleyelim. Private bir metoda sahip şu trait'imiz olsun:

php<?php
  trait TestTrait
  {
    private function method()
    {
      return '!!!';
    }
  }
?>

Trait'imizi bir sınıfa bağlayalım:

php<?php
  class Test
  {
    use TestTrait;
  }
  
  new Test;
?>

Trait'in private metodunu kullanalım:

php<?php
  class Test
  {
    use TestTrait; // trait'i bağlıyoruz
    
    public function __construct()
    {
      echo $this->method(); // '!!!' yazdıracak
    }
  }
  
  new Test;
?>