Modifikátory prístupu a trity v OOP v PHP

Mali by ste venovať pozornosť skutočnosti, že používanie traitov nie je dedenie. Pri dedení sa súkromné metódy a vlastnosti nededia.

V traitoch je to naopak: v triede, ktorá používa trait, budú dostupné ako verejné, tak aj súkromné metódy a vlastnosti trait-u.

Pozrime sa na príklad. Predpokladajme, že máme nasledujúci trait s súkromnou metódou:

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

Pripojme náš trait k triede:

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

Použime súkromnú metódu trait-u:

php<?php
  class Test
  {
    use TestTrait; // pripájame trait
    
    public function __construct()
    {
      echo $this->method(); // vypíše '!!!'
    }
  }
  
  new Test;
?>