PHP OOP'de Trait Metotlarına Erişim İzinlerinde Değişiklikler

Bir trait içinde metotlar için herhangi bir erişim değiştiricisi kullanılabilir (yani public, private veya protected). Ancak gerekirse, sınıfın içinde bu değiştirici başka bir değiştiriciyle değiştirilebilir. Bunun için use gövdesi içinde as anahtar kelimesinden sonra yeni erişim değiştiricisi belirtilmelidir.

Bir örnek üzerinden inceleyelim. Private metoda sahip şu trait'imiz olduğunu varsayalım:

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

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

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

Şimdi sınıf içinde metodu public olarak değiştirelim:

php<?php
  class Test
  {
    use TestTrait {
      TestTrait::method as public;
    }
  }
?>

Public metodun sınıf dışından çalışmasını test edelim:

php<?php
  $test = new Test;
  echo $test->method(); // '!!!' yazdıracak
?>