Piekļuves modifikatori un treiti OOP PHP

Jāpievērš uzmanība tam, ka treitu izmantošana nav mantošana. Mantošanas gadījumā privātās metodes un īpašības netiek mantotas.

Treitos ir otrādi: klasē, kas izmanto treitu, būs pieejamas gan publiskās, gan privātās metodes un īpašības.

Apskatīsim piemērā. Pieņemsim, ka mums ir šāds treits ar privātu metodi:

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

Pievienosim mūsu treitu klasei:

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

Izmantosim treita privāto metodi:

php<?php
  class Test
  {
    use TestTrait; // pievienojam treitu
    
    public function __construct()
    {
      echo $this->method(); // izvadīs '!!!'
    }
  }
  
  new Test;
?>