Modifica dei livelli di accesso ai metodi del tratto nella OOP in PHP

All'interno di un tratto è possibile utilizzare qualsiasi modificatore d'accesso per i metodi (cioè public, private o protected). Se necessario, tuttavia, nella classe stessa è possibile cambiare questo modificatore con un altro. Per fare ciò, nel corpo di use dopo la parola chiave as è necessario specificare il nuovo modificatore.

Vediamo un esempio. Supponiamo di avere il seguente tratto con un metodo privato:

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

Colleghiamo il nostro tratto alla classe:

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

Cambiamo il metodo in pubblico nella classe:

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

Verifichiamo il funzionamento del metodo pubblico dall'esterno della classe:

php<?php
  $test = new Test;
  echo $test->method(); // visualizzerà '!!!'
?>