Bruk av trekk i trekk

Trekk, på samme måte som klasser, kan også bruke andre trekk. La oss se på et eksempel. Anta at vi har et slikt trekk med to metoder:

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

Anta at vi også har et annet trekk:

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

La oss koble trekk Trait1 til trekk Trait2:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // bruker det første trekket
    
    private function method3()
    {
      return 3;
    }
  }
?>

Etter en slik tilkobling vil det resultere i at Trait2 i tillegg til sine egne metoder også vil ha metodene til trekket Trait1. La oss sjekke dette: la oss lage en klasse Test, koble til trekket Trait2 og forsikre oss om at i klassen vår vil metoder fra både det første trekket, og det andre dukke opp:

Test.php<?php
  class Test
  {
    use Trait2; // kobler til det andre trekket
    
    public function __construct()
    {
      echo $this->method1(); // metode fra det første trekket
      echo $this->method2(); // metode fra det første trekket
      echo $this->method3(); // metode fra det andre trekket
    }
  }
?>
Задание 1

Gjør de samme trekkene på egen hånd, som jeg har og koble dem til klassen Test. Lag en metode getSum i denne klassen, som returnerer summen av resultatene fra metodene til de tilkoblede trekkene.