Treitu izmantošana treitos
Treiti, līdzīgi kā klases, var izmantot arī citus treitus. Apskatīsim piemērā. Pieņemsim, ka mums ir šāds treits ar divām metodēm:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Pieņemsim, ka mums ir vēl viens treits:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Pievienosim treitam Trait2
treitu Trait1:
<?php
trait Trait2
{
use Trait1; // izmantojam pirmo treitu
private function method3()
{
return 3;
}
}
?>
Pēc šāda pievienošanas rezultātā Trait2
bez savām metodēm būs arī treita
Trait1 metodes. Pārbaudīsim to: izveidosim
klasi Test, pievienosim tai treitu
Trait2 un pārliecināsimies, ka mūsu klasē
parādīsies metodes no pirmā treita,
kā arī no otrā:
<?php
class Test
{
use Trait2; // pievienojam otro treitu
public function __construct()
{
echo $this->method1(); // pirmā treita metode
echo $this->method2(); // pirmā treita metode
echo $this->method3(); // otrā treita metode
}
}
?>
Patstāvīgi izveidojiet tādus pašus treitus,
kā man, un pievienojiet tos klasei Test.
Izveidojiet šajā klasē metodi getSum,
kas atgriež pievienoto treitu metožu rezultātu summu.