Prieigos modifikatoriai ir treitai OOP PHP

Derėtų atkreipti jūsų dėmesį į tai, kad treitų naudojimas nėra paveldėjimas. Paveldint privatūs metodai ir savybės nepaveldimi.

Treituose viskas atvirkščiai: klasėje, kurioje naudojamas treitas, bus prieinami tiek vieši, tiek ir privatūs klasės metodai ir savybės.

Pažiūrėkime pavyzdžiu. Tarkime, kad turime šį treitą su privačiu metodu:

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

Prijunkime mūsų treitą prie klasės:

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

Naudokime treito privatų metodą:

php<?php
  class Test
  {
    use TestTrait; // prijungiame treitą
    
    public function __construct()
    {
      echo $this->method(); // išves '!!!'
    }
  }
  
  new Test;
?>