Трейты, подобно классам, также могут использовать другие трейты.
Давайте посмотрим на примере. Пусть у нас есть вот такой трейт с двумя методами:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Пусть у нас также есть еще один трейт:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Давайте к трейту Trait2 подключим трейт Trait1:
<?php
trait Trait2
{
use Trait1; // используем первый трейт
private function method3()
{
return 3;
}
}
?>
После такого подключения получится, что Trait2 кроме своих методов будет иметь еще и методы трейта Trait1.
Проверим это: сделаем класс Test, подключим к нему трейт Trait2 и убедимся, что в нашем классе появятся методы как первого трейта, так и второго:
<?php
class Test
{
use Trait2; // подключаем второй трейт
public function __construct()
{
echo $this->method1(); // метод первого трейта
echo $this->method2(); // метод первого трейта
echo $this->method3(); // метод второго трейта
}
}
new Test;
?>
Самостоятельно сделайте такие же трейты, как у меня и подключите их к классу Test. Сделайте в этом классе метод getSum, возвращающий сумму результатов методов подключенных трейтов.