Toegangsmodifiers en traits in OOP in PHP
We moeten uw aandacht vestigen op het feit dat het gebruik van traits geen overerving is. Bij overerving worden private methoden en eigenschappen niet overgeërfd.
Bij traits is het echter omgekeerd: in de klasse die de trait gebruikt, zullen zowel openbare als private methoden en eigenschappen van de klasse beschikbaar zijn.
Laten we kijken naar een voorbeeld. Stel dat we de volgende trait hebben met een private methode:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Laten we onze trait aan de klasse koppelen:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
Laten we de private methode van de trait gebruiken:
<?php
class Test
{
use TestTrait; // verbindt de trait
public function __construct()
{
echo $this->method(); // geeft '!!!' weer
}
}
new Test;
?>