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:

Trait1.php<?php
  trait Trait1
  {
    private function method1()
    {
      return 1;
    }
    
    private function method2()
    {
      return 2;
    }
  }
?>

Tarkime, kad turime ir kitą traitą:

Trait2.php<?php
  trait Trait2
  {
    private function method3()
    {
      return 3;
    }
  }
?>

Prijunkime traitą Trait1 prie traito Trait2:

Trait3.php<?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:

Test.php<?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
    }
  }
?>
Задание 1

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ą.