Модификаторы доступа и трейты в ООП в PHP

Следует обратить ваше внимание на то, что использование трейтов - это не наследование. При наследовании приватные методы и свойства не наследуются.

В трейтах же все наоборот: в использующем трейт классе будут доступны как публичные, так и приватные методы и свойства класса.

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

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

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

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

Используем приватный метод трейта:

php<?php
  class Test
  {
    use TestTrait; // подключаем трейт
    
    public function __construct()
    {
      echo $this->method(); // выведет '!!!'
    }
  }
  
  new Test;
?>