Përdorimi i treteve në trete

Tretet, ngjashëm me klasat, gjithashtu mund të përdorin treta të tjera. Le të shohim një shembull. Le të themi se kemi këtë trete me dy metoda:

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

Le të themi se kemi edhe një trete tjetër:

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

Le ta lidhim tretein Trait1 te treiti Trait2:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // përdorim tretein e parë
    
    private function method3()
    {
      return 3;
    }
  }
?>

Pas kësaj lidhjeje, do të rezultojë se Trait2 përveç metodave të veta do të ketë edhe metodat e treteit Trait1. Le ta kontrollojmë këtë: le të krijojmë klasën Test, të lidhim me të tretein Trait2 dhe të sigurohemi që në klasën tonë do të shfaqen metodat si nga treiti i parë, ashtu edhe nga i dyti:

Test.php<?php
  class Test
  {
    use Trait2; // lidhim tretein e dytë
    
    public function __construct()
    {
      echo $this->method1(); // metoda e treteit të parë
      echo $this->method2(); // metoda e treteit të parë
      echo $this->method3(); // metoda e treteit të dytë
    }
  }
?>
Задание 1

Bëni vetë të njëjtat trete si tek unë dhe lidhini ato me klasën Test. Bëni në këtë klasë metodën getSum, që kthen shumën e rezultateve të metodave të treteve të lidhur.