Истифодаи трейтҳо дар трейтҳо
Трейтҳо, монанди синфҳо, инчунин метавонанд дигар трейтҳоро истифода баранд. Биёед ба мисол назар андозем. Фарз мекунем, ки мо чунин трейти бо ду усул дорем:
<?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-ро созед,
ки ҷамъи натиҷаҳои усулҳои трейтҳои пайвастшударо бармегардонад.