Модификатори за достъп и трейтове в ООП в PHP

Трябва да обърнете внимание на факта, че използването на трейтове не е наследяване. При наследяването частните методи и свойства не се наследяват.

При трейтовете е обратното: в класа, който използва трейта, ще бъдат достъпни както публичните, така и частните методи и свойства на класа.

Нека разгледаме пример. Да предположим, че имаме следния трейт с частен метод:

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

Нека включим нашия трейт в клас:

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

Използваме частния метод на трейта:

php<?php
  class Test
  {
    use TestTrait; // включваме трейта
    
    public function __construct()
    {
      echo $this->method(); // ще изведе '!!!'
    }
  }
  
  new Test;
?>