A trait metódusainak láthatósági módosítói változtatása PHP OOP-ben

Egy traitben bármilyen láthatósági módosót használhatunk a metódusokhoz (vagyis public, private vagy protected). Szükség esetén azonban maga az osztály megváltoztathatja ezt a módosítót másra. Ehhez a use törzsében a as kulcsszó után meg kell adni az új módosítót.

Nézzük ezt egy példán. Tegyük fel, hogy a következő traitünk van privát metódussal:

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

Kapcsoljuk a traitünket az osztályhoz:

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

Változtassuk meg az osztályban a metódust publikusra:

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

Ellenőrizzük a publikus metódus működését az osztályon kívülről:

php<?php
  $test = new Test;
  echo $test->method(); // kiírja '!!!'
?>