Մուտքի փոփոխիչներ և տրեյթներ OOP-ում PHP-ում

Պետք է ուշադրություն դարձնել, որ տրեյթների օգտագործումը ժառանգում չէ: Ժառանգման ժամանակ փակ մեթոդները և հատկությունները չեն ժառանգվում:

Տրեյթներում հակառակն է` տրեյթ օգտագործող դասում հասանելի կլինեն ինչպես հանրային, այնպես էլ փակ մեթոդները և հատկությունները:

Օրինակով նայենք: Ենթադրենք ունենք հետևյալ տրեյթը փակ մեթոդով:

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

Միացնենք մեր տրեյթը դասին:

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

Օգտագործենք տրեյթի փակ մեթոդը:

php<?php
  class Test
  {
    use TestTrait; // միացնում ենք տրեյթը
    
    public function __construct()
    {
      echo $this->method(); // կարտածի '!!!'
    }
  }
  
  new Test;
?>