Käyttöoikeusmuokkaajat ja traitit OOP:ssa PHP:ssä

On kiinnitettävä huomiota siihen, että traitien käyttö ei ole perintää. Perinnässä yksityiset menetelmät ja ominaisuudet eivät periyty.

Traiteissa kaikki on päinvastoin: traitia käyttävässä luokassa sekä julkiset että yksityiset menetelmät ja ominaisuudet ovat saatavilla.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava trait yksityisellä menetelmällä:

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

Yhdistetään traitimme luokkaan:

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

Käytetään traitin yksityistä menetelmää:

php<?php
  class Test
  {
    use TestTrait; // yhdistetään trait
    
    public function __construct()
    {
      echo $this->method(); // tulostaa '!!!'
    }
  }
  
  new Test;
?>