Модификатори за достъп и трейтове в ООП в 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;
?>