Hozzáférési módosítók és trait-ok az OOP-ban PHP-ben

Fel kell hívnunk a figyelmet arra, hogy a trait-ek használata nem öröklés. Az öröklés során a privát metódusok és tulajdonságok nem öröklődnek.

A trait-ekben minden éppen ellenkezőleg: a trait-et használó osztályban mind a publikus, mind a privát metódusok és tulajdonságok elérhetőek lesznek.

Nézzünk egy példát. Tegyük fel, hogy van a következő trait-ünk privát metódussal:

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

Kapcsoljuk össze trait-ünket az osztállyal:

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

Használjuk a trait privát metódusát:

php<?php
  class Test
  {
    use TestTrait; // trait csatlakoztatása
    
    public function __construct()
    {
      echo $this->method(); // kiírja '!!!'-t
    }
  }
  
  new Test;
?>