Zmiana widoczności metod trait w OOP w PHP

Wewnątrz traita można używać dowolnego modyfikatora dostępu dla metod (czyli public, private lub protected). W razie potrzeby jednak w samej klasie można ten modyfikator zmienić na inny. W tym celu w ciele use po słowie kluczowym as należy podać nowy modyfikator.

Spójrzmy na przykład. Załóżmy, że mamy następujący trait z metodą prywatną:

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

Podłączmy nasz trait do klasy:

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

Zmieńmy w klasie metodę na publiczną:

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

Sprawdźmy działanie metody publicznej na zewnątrz klasy:

php<?php
  $test = new Test;
  echo $test->method(); // wyświetli '!!!'
?>