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:

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

Załóżmy, że mamy również jeszcze jeden trait:

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

Podłączmy do traitu Trait2 trait Trait1:

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

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

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.