Трейтлар ичида трейтлардан фойдаланиш
Трейтлар, синфлар каби, бошқа трейтлардан фойдаланиши мумкин. Келгила, мисолда кўрамиз. Бизда икки метода эга бўлган шундай трейт мавжуд дейлик:
<?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
трейтини улаймиз ва бизнинг синфимизда
хар иккала трейтнинг методлари
paydo бўлишини кўрамиз:
<?php
class Test
{
use Trait2; // иккинчи трейтни улаймиз
public function __construct()
{
echo $this->method1(); // биринчи трейтнинг метода
echo $this->method2(); // биринчи трейтнинг метода
echo $this->method3(); // иккинчи трейтнинг метода
}
}
?>
Мустақил равишда менникка ўхшаш трейтларни яратинг
ва уларни Test синфига уланг.
Ушбу синфда getSum методани яратинг,
у уланган трейтлар методлари натижалари
йиғиндисини қайтарсин.