Modificarea drepturilor de acces la metodele trait în OOP în PHP

În interiorul unui trait puteți utiliza orice modificator de acces pentru metode (adică public, private sau protected). Cu toate acestea, dacă este necesar, în clasa însăși puteți schimba acest modificator cu altul. Pentru a face acest lucru, în corpul use după cuvântul cheie as trebuie să specificați noul modificator.

Să vedem un exemplu. Să presupunem că avem următorul trait cu o metodă privată:

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

Să conectăm trait-ul nostru la clasă:

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

Să schimbăm metoda în publică în clasă:

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

Să verificăm funcționarea metodei publice din afara clasei:

php<?php
  $test = new Test;
  echo $test->method(); // va afișa '!!!'
?>