Traitų naudojimas traituose
Traitai, panašiai kaip ir klasės, taip pat gali naudoti kitus traitus. Pažiūrėkime pavyzdžiu. Tarkime, kad turime tokį traitą su dviem metodais:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Tarkime, kad turime ir kitą traitą:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Prijunkime traitą Trait1 prie
traito Trait2:
<?php
trait Trait2
{
use Trait1; // naudojame pirmąjį traitą
private function method3()
{
return 3;
}
}
?>
Po tokio prijungimo pasirodys, kad Trait2
be savo metodų turės ir traitų
Trait1 metodus. Patikrinkime tai: sukurkime
klasę Test, prijunkime prie jos traitą
Trait2 ir įsitikinkime, kad mūsų klasėje
pasirodys metodai kaip iš pirmojo traito,
taip ir iš antrojo:
<?php
class Test
{
use Trait2; // prijungiame antrąjį traitą
public function __construct()
{
echo $this->method1(); // pirmojo traito metodas
echo $this->method2(); // pirmojo traito metodas
echo $this->method3(); // antrojo traito metodas
}
}
?>
Savarankiškai padarykite tuos pačius traitus,
kaip ir aš, ir prijunkite juos prie klasės Test.
Padarykite šioje klasėje metodą getSum,
grąžinantį prijungtų traitų metodų rezultatų sumą.