Modifikátory přístupu a traity v OOP v PHP

Je třeba upozornit na to, že používání traitů není dědičnost. Při dědičnosti se privátní metody a vlastnosti nedědí.

U traitů je to naopak: ve třídě, která trait používá, budou dostupné jak veřejné, tak i privátní metody a vlastnosti traitů.

Podívejme se na příklad. Předpokládejme, že máme následující trait s privátní metodou:

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

Připojme náš trait ke třídě:

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

Použijeme privátní metodu traitu:

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