Истифодаи трейтҳо дар трейтҳо

Трейтҳо, монанди синфҳо, инчунин метавонанд дигар трейтҳоро истифода баранд. Биёед ба мисол назар андозем. Фарз мекунем, ки мо чунин трейти бо ду усул дорем:

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-ро созед, ки ҷамъи натиҷаҳои усулҳои трейтҳои пайвастшударо бармегардонад.