Modyfikatory dostępu i traity w OOP w PHP

Należy zwrócić uwagę na to, że używanie traitów - to nie jest dziedziczenie. Przy dziedziczeniu metody prywatne i właściwości nie są dziedziczone.

W traitach jest odwrotnie: w klasie używającej traita będą dostępne zarówno publiczne, jak i prywatne metody oraz właściwości traita.

Spójrzmy na przykład. Załóżmy, że mamy następujący trait z metodą prywatną:

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

Podłączmy nasz trait do klasy:

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

Użyjmy prywatnej metody traita:

php<?php
  class Test
  {
    use TestTrait; // podłączamy trait
    
    public function __construct()
    {
      echo $this->method(); // wypisze '!!!'
    }
  }
  
  new Test;
?>