Juurdepääsu modifikaatorid ja treidid OOP-s PHP-s

Peaksite pöörama tähelepanu sellele, et treitide kasutamine ei ole pärimine. Pärimise korral privaatsed meetodid ja omadused ei pärine.

Treitides on kõik vastupidi: treiti kasutavas klassis on kättesaadavad nii avalikud kui ka privaatsed meetodid ja klassi omadused.

Vaatame näidet. Oletame, et meil on järgmine treit privaatse meetodiga:

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

Ühendame oma treidi klassiga:

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

Kasutame treidi privaatset meetodit:

php<?php
  class Test
  {
    use TestTrait; // ühendame treidi
    
    public function __construct()
    {
      echo $this->method(); // väljastab '!!!'
    }
  }
  
  new Test;
?>