წვდომის მოდიფიკატორები და ტრეიტები OOP-ში PHP-ში
ყურადღება უნდა მიაქციოთ იმას, რომ ტრეიტების გამოყენება - ეს არ არის მემკვიდრეობითობა. მემკვიდრეობითობისას პრივატური მეთოდები და თვისებები არ გადაეცემა მემკვიდრეობით.
ტრეიტებში კი საპირისპიროა: ტრეიტის გამოყენებად კლასში იქნება ხელმისაწვდომი როგორც პუბლიკური, ასევე პრივატური მეთოდები და თვისებები კლასის.
შევხედოთ მაგალითს. დავუშვათ, გვაქვს შემდეგი ტრეიტი პრივატური მეთოდით:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
მოდით, დავაკავშიროთ ჩვენი ტრეიტი კლასთან:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
გამოვიყენოთ ტრეიტის პრივატური მეთოდი:
<?php
class Test
{
use TestTrait; // ვაკავშირებთ ტრეიტს
public function __construct()
{
echo $this->method(); // გამოიტანს '!!!'
}
}
new Test;
?>