Модификаторы доступа и трейты в ООП в PHP
Следует обратить ваше внимание на то, что использование трейтов - это не наследование. При наследовании приватные методы и свойства не наследуются.
В трейтах же все наоборот: в использующем трейт классе будут доступны как публичные, так и приватные методы и свойства класса.
Посмотрим на примере. Пусть у нас есть следующий трейт с приватным методом:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Подключим наш трейт к классу:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
Используем приватный метод трейта:
<?php
class Test
{
use TestTrait; // подключаем трейт
public function __construct()
{
echo $this->method(); // выведет '!!!'
}
}
new Test;
?>