OOP:ssa PHP:n trait-metodien käyttöoikeusmuutoksista

Traitin sisällä voidaan käyttää mitä tahansa käyttöoikeusmodifioijaa metodeille (eli public, private tai protected). Tarvittaessa kuitenkin luokassa itsessään tätä modifioijaa voidaan muuttaa toiseksi. Tätä varten use-ruumiissa as-avainsanan jälkeen on määritettävä uusi modifioija.

Katsotaan esimerkkiä. Oletetaan, että meillä on seuraava trait yksityisellä metodilla:

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

Liitetään traitimme luokkaan:

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

Muutetaan luokassa metodi julkiseksi:

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

Tarkistetaan julkisen metodin toiminta luokan ulkopuolelta:

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