Modificadores de acceso y traits en POO en PHP

Debes prestar atención al hecho de que usar traits no es herencia. Con la herencia, los métodos y propiedades privados no se heredan.

Con los traits es todo lo contrario: en la clase que utiliza el trait, estarán disponibles tanto los métodos y propiedades públicos como los privados del trait.

Veamos un ejemplo. Supongamos que tenemos el siguiente trait con un método privado:

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

Conectemos nuestro trait a la clase:

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

Usemos el método privado del trait:

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