Modyfikatory dostępu i traity w OOP w PHP
Należy zwrócić uwagę na to, że używanie traitów - to nie jest dziedziczenie. Przy dziedziczeniu metody prywatne i właściwości nie są dziedziczone.
W traitach jest odwrotnie: w klasie używającej traita będą dostępne zarówno publiczne, jak i prywatne metody oraz właściwości traita.
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;
}
new Test;
?>
Użyjmy prywatnej metody traita:
<?php
class Test
{
use TestTrait; // podłączamy trait
public function __construct()
{
echo $this->method(); // wypisze '!!!'
}
}
new Test;
?>