Korišćenje trejtova u trejtovima

Trejtovi, slično klasama, takođe mogu koristiti druge trejtove. Pogledajmo na primeru. Pretpostavimo da imamo ovakav trejt sa dve metode:

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

Pretpostavimo da imamo još jedan trejt:

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

Hajde da trejtu Trait2 povežemo trejt Trait1:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // koristimo prvi trejt
    
    private function method3()
    {
      return 3;
    }
  }
?>

Nakon ovakvog povezivanja, ispostaviće se da Trait2 pored svojih metoda imaće i metode trejta Trait1. Proverimo ovo: napravićemo klasu Test, povezaćemo sa njom trejt Trait2 i uverićemo se da će u našoj klasi pojaviti metode i prvog trejta, i drugog:

Test.php<?php
  class Test
  {
    use Trait2; // povezujemo drugi trejt
    
    public function __construct()
    {
      echo $this->method1(); // metoda prvog trejta
      echo $this->method2(); // metoda prvog trejta
      echo $this->method3(); // metoda drugog trejta
    }
  }
?>
Задание 1

Samostalno napravite iste takve trejtove, kao kod mene i povežite ih sa klasom Test. Napravite u ovoj klasi metodu getSum, koja vraća zbir rezultata metoda povezanih trejtova.