Alterações na visibilidade de métodos de traits na OOP em PHP
Dentro de uma trait, você pode usar qualquer modificador
de acesso para métodos (ou seja, public, private
ou protected). No entanto, se necessário,
a própria classe pode alterar este modificador
para outro. Para isso, no corpo de use, após
a palavra-chave as, você deve especificar o novo
modificador.
Vamos ver um exemplo. Suponha que temos a seguinte trait com um método privado:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Vamos usar nossa trait em uma classe:
<?php
class Test
{
use TestTrait;
}
?>
Vamos alterar o método para público na classe:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Vamos testar o funcionamento do método público de fora da classe:
<?php
$test = new Test;
echo $test->method(); // exibirá '!!!'
?>