Tilgangsmodifikatorer og trekk i OOP i PHP
Det bør rettes oppmerksomhet mot at bruk av trekk ikke er arv. Ved arv arves ikke private metoder og egenskaper.
I trekk er det motsatt: i klassen som bruker trekket vil både offentlige og private metoder og egenskaper fra trekket være tilgjengelige.
La oss se på et eksempel. Anta at vi har følgende trekk med en privat metode:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
La oss koble trekket vårt til en klasse:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
La oss bruke trekket sin private metode:
<?php
class Test
{
use TestTrait; // kobler til trekket
public function __construct()
{
echo $this->method(); // vil skrive ut '!!!'
}
}
new Test;
?>