Adgangsmodifikatorer og træk i OOP i PHP

Det bør bemærkes, at brugen af træk ikke er arv. Ved arv nedarves private metoder og egenskaber ikke.

I træk er det omvendt: i den klasse, der bruger trækket, vil både offentlige og private metoder og egenskaber fra klassen være tilgængelige.

Lad os se på et eksempel. Antag, at vi har følgende træk med en privat metode:

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

Lad os tilslutte vores træk til klassen:

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

Lad os bruge trækkets private metode:

php<?php
  class Test
  {
    use TestTrait; // tilslutter træk
    
    public function __construct()
    {
      echo $this->method(); // vil udskrive '!!!'
    }
  }
  
  new Test;
?>