Endring av tilgangsnivåer for trait-metoder i OOP i PHP

Inne i en trait kan du bruke hvilket som helst tilgangsnivå for metoder (det vil si public, private eller protected). Ved behov kan imidlertid denne tilgangsmodifikatoren endres til en annen i selve klassen. For å gjøre dette, må du i kroppen av use etter nøkkelordet as angi den nye tilgangsmodifikatoren.

La oss se på et eksempel. Anta at vi har følgende trait med en privat metode:

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

La oss koble trait-en vår til en klasse:

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

La oss endre metoden til publik i klassen:

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

La oss teste den publiske metoden utenfra klassen:

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