Използване на трейтове в трейтове
Трейтовете, подобно на класовете, също могат да използват други трейтове. Нека да разгледаме пример. Да предположим, че имаме следния трейт с два метода:
<?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(); // метод на втория трейт
}
}
?>
Самостоятелно направете същите трейтове,
както при мен и ги подключете към класа Test.
Направете в този клас метод getSum,
връщащ сумата от резултатите на методите на подключените
трейтове.