PHP-də OOP-də Giriş Modifikatorları və Treytlər

Diqqətinizi çəkmək istəyirik ki, treytlərin istifadəsi irs deyil. İrs zamanı private metodlar və xassələr miras alınmır.

Treytlərdə isə hər şey əksinədir: treyti istifadə edən klasda həm public, həm də private metodlar və xassələr əlçatan olacaq.

Nümunə üzərində baxaq. Tutaq ki, bizim private metodu olan aşağıdakı treytimiz var:

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

Gəlin treytimizi klasa qoşaq:

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

Treytin private metodundan istifadə edək:

php<?php
  class Test
  {
    use TestTrait; // treyti qoşuruq
    
    public function __construct()
    {
      echo $this->method(); // '!!!' çap edəcək
    }
  }
  
  new Test;
?>