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:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Anta at vi også har et annet trekk:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
La oss koble trekk Trait1 til
trekk Trait2:
<?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:
<?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
}
}
?>
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.