Wykorzystanie traitów w traitach
Traity, podobnie jak klasy, również mogą wykorzystywać inne traity. Spójrzmy na przykład. Załóżmy, że mamy taki trait z dwiema metodami:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Załóżmy, że mamy również jeszcze jeden trait:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Podłączmy do traitu Trait2
trait Trait1:
<?php
trait Trait2
{
use Trait1; // wykorzystujemy pierwszy trait
private function method3()
{
return 3;
}
}
?>
Po takim podłączeniu okaże się, że Trait2
oprócz własnych metod będzie miał także metody
traitu Trait1. Sprawdźmy to: stwórzmy
klasę Test, podłączmy do niej trait
Trait2 i przekonajmy się, że w naszej klasie
pojawią się metody zarówno pierwszego traitu,
jak i drugiego:
<?php
class Test
{
use Trait2; // podłączamy drugi trait
public function __construct()
{
echo $this->method1(); // metoda pierwszego traitu
echo $this->method2(); // metoda pierwszego traitu
echo $this->method3(); // metoda drugiego traitu
}
}
?>
Samodzielnie wykonaj takie same traity,
jak u mnie i podłącz je do klasy Test.
Wykonaj w tej klasie metodę getSum,
zwracającą sumę wyników metod podłączonych
traitów.