Cambios en los permisos de acceso a métodos de trait en POO en PHP
Dentro de un trait se puede utilizar cualquier modificador
de acceso para los métodos (es decir, public, private
o protected). Sin embargo, si es necesario,
en la propia clase se puede cambiar este modificador
por otro. Para ello, en el cuerpo de use después de
la palabra clave as se debe especificar el nuevo
modificador.
Veamos un ejemplo. Supongamos que tenemos el siguiente trait con un método privado:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Conectemos nuestro trait a la clase:
<?php
class Test
{
use TestTrait;
}
?>
Cambiemos el método a público en la clase:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Comprobemos el funcionamiento del método público desde fuera de la clase:
<?php
$test = new Test;
echo $test->method(); // mostrará '!!!'
?>