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
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Podłączmy nasz trait do klasy:
<?php
class Test
{
use TestTrait;
}
?>
Zmieńmy w klasie metodę na publiczną:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Sprawdźmy działanie metody publicznej na zewnątrz klasy:
<?php
$test = new Test;
echo $test->method(); // wyświetli '!!!'
?>