Traitien käyttö traiteissa
Traitit, kuten luokat, voivat myös käyttää muita traiteja. Katsotaanpa esimerkkiä. Oletetaan, että meillä on tällainen trait kahdella metodilla:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Oletetaan, että meillä on myös toinen trait:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Yhdistetään traitiin Trait2
trait Trait1:
<?php
trait Trait2
{
use Trait1; // käytetään ensimmäistä traita
private function method3()
{
return 3;
}
}
?>
Tällaisen yhdistämisen jälkeen Trait2
sisältää omien metodien lisäksi myös
traitin Trait1 metodit. Tarkistetaan tämä: tehdään
luokka Test, yhdistetään siihen trait
Trait2 ja varmistetaan, että luokkaamme
ilmestyvät sekä ensimmäisen traitin
että toisen metodit:
<?php
class Test
{
use Trait2; // yhdistetään toinen trait
public function __construct()
{
echo $this->method1(); // ensimmäisen traitin metodi
echo $this->method2(); // ensimmäisen traitin metodi
echo $this->method3(); // toisen traitin metodi
}
}
?>
Tee itsenäisesti samanlaiset traitit,
kuin minulla ja yhdistä ne luokkaan Test.
Tee tähän luokkaan metodi getSum,
joka palauttaa yhdistettyjen traittien
metodien tulosten summan.