წვდომის მოდიფიკატორები და ტრეიტები OOP-ში PHP-ში

ყურადღება უნდა მიაქციოთ იმას, რომ ტრეიტების გამოყენება - ეს არ არის მემკვიდრეობითობა. მემკვიდრეობითობისას პრივატური მეთოდები და თვისებები არ გადაეცემა მემკვიდრეობით.

ტრეიტებში კი საპირისპიროა: ტრეიტის გამოყენებად კლასში იქნება ხელმისაწვდომი როგორც პუბლიკური, ასევე პრივატური მეთოდები და თვისებები კლასის.

შევხედოთ მაგალითს. დავუშვათ, გვაქვს შემდეგი ტრეიტი პრივატური მეთოდით:

php<?php
  trait TestTrait
  {
    private function method()
    {
      return '!!!';
    }
  }
?>

მოდით, დავაკავშიროთ ჩვენი ტრეიტი კლასთან:

php<?php
  class Test
  {
    use TestTrait;
  }
  
  new Test;
?>

გამოვიყენოთ ტრეიტის პრივატური მეთოდი:

php<?php
  class Test
  {
    use TestTrait; // ვაკავშირებთ ტრეიტს
    
    public function __construct()
    {
      echo $this->method(); // გამოიტანს '!!!'
    }
  }
  
  new Test;
?>