ტრეიტის მეთოდების წვდომის უფლებების ცვლილება PHP-ის OOP-ში

ტრეიტის შიგნით შეგიძლიათ გამოიყენოთ ნებისმიერი წვდომის მოდიფიკატორი მეთოდებისთვის (ანუ public, private ან protected). საჭიროების შემთხვევაში, თუმცა, თავად კლასში შესაძლებელია ამ მოდიფიკატორის სხვაზე შეცვლა. ამისთვის use-ის ტანში გასაღები სიტყვის as შემდეგ უნდა მიუთითოთ ახალი მოდიფიკატორი.

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

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

მივაბათ ჩვენი ტრეიტი კლასს:

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

შევცვალოთ კლასში მეთოდი პუბლიკურად:

php<?php
  class Test
  {
    use TestTrait {
      TestTrait::method as public;
    }
  }
?>

შევამოწმოთ პუბლიკური მეთოდის მუშაობა კლასის გარედან:

php<?php
  $test = new Test;
  echo $test->method(); // გამოიტანს '!!!'
?>