Промяна на правата за достъп до методи на trait в ООП в PHP

Вътре в trait можете да използвате всякакъв модификатор за достъп за методи (тоест public, private или protected). При необходимост обаче, в самия клас можете да промените този модификатор на друг. За това в тялото на use след ключовата дума as трябва да посочите новия модификатор.

Да разгледаме с пример. Нека имаме следния trait с частен метод:

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

Нека подключим нашия trait към класа:

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

Нека променим в класа метода на публичен:

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

Нека проверим работата на публичния метод отвън на класа:

php<?php
  $test = new Test;
  echo $test->method(); // ще изведе '!!!'
?>