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