Изменения прав доступа к методам трейта в ООП в PHP

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

Посмотрим на примере. Пусть у нас есть следующий трейт с приватным методом:

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

Подключим наш трейт к классу:

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

Поменяем в классе метод на публичный:

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

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

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