Трейтлардаги методларга рұхсат ўзгартириш ООП да PHP

Трейт ичида методлар учун ҳар қандай рұхсат модификатори ишлатилиши мумкин (яъни 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(); // '!!!' чиқади
?>