Änderung der Zugriffsrechte auf Trait-Methoden in OOP in PHP

Innerhalb eines Traits kann jeder Zugriffsmodifikator für Methoden verwendet werden (also public, private oder protected). Bei Bedarf kann jedoch in der Klasse selbst dieser Modifikator auf einen anderen geändert werden. Dazu muss im Körper von use nach dem Schlüsselwort as der neue Modifikator angegeben werden.

Schauen wir uns ein Beispiel an. Nehmen wir an, wir haben den folgenden Trait mit einer privaten Methode:

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

Binden wir unseren Trait in eine Klasse ein:

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

Ändern wir die Methode in der Klasse auf public:

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

Prüfen wir die Funktionsweise der öffentlichen Methode von außerhalb der Klasse:

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