Treitu izmantošana treitos

Treiti, līdzīgi kā klases, var izmantot arī citus treitus. Apskatīsim piemērā. Pieņemsim, ka mums ir šāds treits ar divām metodēm:

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

Pieņemsim, ka mums ir vēl viens treits:

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

Pievienosim treitam Trait2 treitu Trait1:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // izmantojam pirmo treitu
    
    private function method3()
    {
      return 3;
    }
  }
?>

Pēc šāda pievienošanas rezultātā Trait2 bez savām metodēm būs arī treita Trait1 metodes. Pārbaudīsim to: izveidosim klasi Test, pievienosim tai treitu Trait2 un pārliecināsimies, ka mūsu klasē parādīsies metodes no pirmā treita, kā arī no otrā:

Test.php<?php
  class Test
  {
    use Trait2; // pievienojam otro treitu
    
    public function __construct()
    {
      echo $this->method1(); // pirmā treita metode
      echo $this->method2(); // pirmā treita metode
      echo $this->method3(); // otrā treita metode
    }
  }
?>
Задание 1

Patstāvīgi izveidojiet tādus pašus treitus, kā man, un pievienojiet tos klasei Test. Izveidojiet šajā klasē metodi getSum, kas atgriež pievienoto treitu metožu rezultātu summu.