Промяна на правата за достъп до методи на trait в ООП в PHP
Вътре в trait можете да използвате всякакъв модификатор
за достъп за методи (тоест public, private
или protected). При необходимост обаче,
в самия клас можете да промените този модификатор
на друг. За това в тялото на use след
ключовата дума as трябва да посочите новия
модификатор.
Да разгледаме с пример. Нека имаме следния trait с частен метод:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Нека подключим нашия trait към класа:
<?php
class Test
{
use TestTrait;
}
?>
Нека променим в класа метода на публичен:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Нека проверим работата на публичния метод отвън на класа:
<?php
$test = new Test;
echo $test->method(); // ще изведе '!!!'
?>