Ændringer i adgangsrettigheder til trait-metoder i OOP i PHP

I et trait kan du bruge enhver adgangsmodifikator for metoder (det vil sige public, private eller protected). Om nødvendigt kan denne modifikator dog ændres til en anden i selve klassen. For at gøre dette skal du i kroppen af use efter nøgleordet as angive den nye modifikator.

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

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

Lad os forbinde vores trait til klassen:

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

Lad os ændre metoden til offentlig i klassen:

php<?php
  class Test
  {
    use TestTrait {
      TestTrait::method as public;
    }
  }
?>

Lad os teste den offentlige metode udefra klassen:

php<?php
  $test = new Test;
  echo $test->method(); // vil udskrive '!!!'
?>