Treytlarni treytlarda qo‘llash
Treytlar, klasslarga o‘xshab, boshqa treytlardan ham foydalanishi mumkin. Keling, buni misol bilan ko‘ramiz. Faraz qilaylik, bizda ikkita metodi bo‘lgan quyidagi treyt mavjud:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Faraz qilaylik, bizda yana boshqa treyt mavjud:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Keling, Trait2 treytiga
Trait1 treytini ulaymiz:
<?php
trait Trait2
{
use Trait1; // birinchi treytni ishlatamiz
private function method3()
{
return 3;
}
}
?>
Bunday ulanishdan so‘ng, Trait2
o‘z metodlaridan tashqari, Trait1
treytining metodlariga ham ega bo‘ladi. Buni tekshiramiz: Test
klassini yaratamiz, unga Trait2
treytini ulaymiz va klassimizda
ham birinchi treytning,
ham ikkinchi treytning metodlari
paydo bo‘lishiga ishonch hosil qilamiz:
<?php
class Test
{
use Trait2; // ikkinchi treytni ulaymiz
public function __construct()
{
echo $this->method1(); // birinchi treytning metodi
echo $this->method2(); // birinchi treytning metodi
echo $this->method3(); // ikkinchi treytning metodi
}
}
?>
Mustaqil ravishda menga o‘xshash treytlarni yarating
va ularni Test klassiga ulang.
Ushbu klassda getSum metodini yarating,
ulangan treytlar metodlarining natijalari yig‘indisini
qaytaradigan.