Modificadores de acesso e traits na POO em PHP

É importante chamar sua atenção para o fato de que o uso de traits não é herança. Na herança, métodos e propriedades privados não são herdados.

Com as traits, é o oposto: na classe que usa a trait, tanto os métodos e propriedades públicos quanto os privados da trait estarão disponíveis.

Vamos ver um exemplo. Suponha que temos a seguinte trait com um método privado:

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

Vamos conectar nossa trait à classe:

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

Vamos usar o método privado da trait:

php<?php
  class Test
  {
    use TestTrait; // conectamos a trait
    
    public function __construct()
    {
      echo $this->method(); // exibirá '!!!'
    }
  }
  
  new Test;
?>