Modificatori de acces și trăsături în OOP în PHP

Trebuie să vă atragem atenția asupra faptului că utilizarea trăsăturilor - nu este moștenire. La moștenire, metodele și proprietățile private nu sunt moștenite.

În trăsături este invers: în clasa care utilizează trăsătura vor fi accesibile atât metodele și proprietățile publice, cât și cele private ale clasei.

Să vedem un exemplu. Să presupunem că avem următoarea trăsătură cu o metodă privată:

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

Să conectăm trăsătura noastră la clasă:

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

Să utilizăm metoda privată a trăsăturii:

php<?php
  class Test
  {
    use TestTrait; // conectăm trăsătura
    
    public function __construct()
    {
      echo $this->method(); // va afișa '!!!'
    }
  }
  
  new Test;
?>