Modifica dei livelli di accesso ai metodi del tratto nella OOP in PHP
All'interno di un tratto è possibile utilizzare qualsiasi modificatore
d'accesso per i metodi (cioè public, private
o protected). Se necessario, tuttavia,
nella classe stessa è possibile cambiare questo modificatore
con un altro. Per fare ciò, nel corpo di use dopo
la parola chiave as è necessario specificare il nuovo
modificatore.
Vediamo un esempio. Supponiamo di avere il seguente tratto con un metodo privato:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Colleghiamo il nostro tratto alla classe:
<?php
class Test
{
use TestTrait;
}
?>
Cambiamo il metodo in pubblico nella classe:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Verifichiamo il funzionamento del metodo pubblico dall'esterno della classe:
<?php
$test = new Test;
echo $test->method(); // visualizzerà '!!!'
?>