Ä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
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Binden wir unseren Trait in eine Klasse ein:
<?php
class Test
{
use TestTrait;
}
?>
Ändern wir die Methode in der Klasse auf public:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Prüfen wir die Funktionsweise der öffentlichen Methode von außerhalb der Klasse:
<?php
$test = new Test;
echo $test->method(); // gibt '!!!' aus
?>