Treytlerin treytlerde istifadesi
Treytlər, siniflər kimi, həmçinin digər treytlərdən istifadə edə bilər. Gəlin bir nümunəyə baxaq. Tutaq ki, bizim burada iki metodu olan belə bir treyt var:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Tutaq ki, bizim həmçinin başqa bir treyt var:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Gəlin Trait2 treytinə
Trait1 treytini qoşaq:
<?php
trait Trait2
{
use Trait1; // birinci treyti istifadə edirik
private function method3()
{
return 3;
}
}
?>
Belə bir qoşulmadan sonra Trait2 treytinin
öz metodlarından əlavə, Trait1 treytinin
metodları da olacaq. Gəlin bunu yoxlayaq: Test
sinifi yaradaq, ona Trait2 treytini qoşaq
və sinifimizdə həm birinci treytin, həm də ikinci treytin
metodlarının peyda olduğuna əmin olaq:
<?php
class Test
{
use Trait2; // ikinci treyti qoşuruq
public function __construct()
{
echo $this->method1(); // birinci treytin metodu
echo $this->method2(); // birinci treytin metodu
echo $this->method3(); // ikinci treytin metodu
}
}
?>
Özünüz mənimki kimi eyni treytləri düzəldin
və onları Test sinfinə qoşun.
Bu sinifdə getSum metodunu düzəldin,
hansı ki, qoşulmuş treytlərin metodlarının
nəticələrinin cəmini qaytarır.