Използване на трейтове в трейтове

Трейтовете, подобно на класовете, също могат да използват други трейтове. Нека да разгледаме пример. Да предположим, че имаме следния трейт с два метода:

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

Да предположим, че имаме и още един трейт:

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

Нека към трейта Trait2 подключим трейта Trait1:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // използваме първия трейт
    
    private function method3()
    {
      return 3;
    }
  }
?>

След такова подключение ще се получи, че Trait2 освен собствените си методи ще има и методите на трейта Trait1. Нека проверим това: ще направим клас Test, ще подключим към него трейта Trait2 и ще се убедим, че в нашия клас ще се появят методи както на първия трейт, така и на втория:

Test.php<?php
  class Test
  {
    use Trait2; // подключваме втория трейт
    
    public function __construct()
    {
      echo $this->method1(); // метод на първия трейт
      echo $this->method2(); // метод на първия трейт
      echo $this->method3(); // метод на втория трейт
    }
  }
?>
Задание 1

Самостоятелно направете същите трейтове, както при мен и ги подключете към класа Test. Направете в този клас метод getSum, връщащ сумата от резултатите на методите на подключените трейтове.