Modificatori di accesso e tratti in OOP in PHP
È importante prestare attenzione al fatto che l'uso dei tratti non è ereditarietà. Nell'ereditarietà i metodi e le proprietà privati non vengono ereditati.
Nei tratti è vero il contrario: nella classe che utilizza il tratto saranno accessibili sia i metodi e le proprietà pubblici che quelli privati.
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;
}
new Test;
?>
Usiamo il metodo privato del tratto:
<?php
class Test
{
use TestTrait; // colleghiamo il tratto
public function __construct()
{
echo $this->method(); // visualizzerà '!!!'
}
}
new Test;
?>