ტრეიტების გამოყენება ტრეიტებში

ტრეიტებს, კლასების მსგავსად, ასევე შეუძლიათ სხვა ტრეიტების გამოყენება. მოდით შევხედოთ მაგალითს. დავუშვათ, გვაქვს ასეთი ტრეიტი ორი მეთოდით:

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, რომელიც აბრუნებს მიბმული ტრეიტების მეთოდების შედეგების ჯამს.