PHP da OOP da Kirish Modifikatorlari va Treytlar

E'tiboringizni shunga qaratish kerakki, treytlardan foydalanish - bu meros emas. Merosda private usullar va xususiyatlar meros qolinmaydi.

Treytlarda esa hammasi teskarisi: treytdan foydalanadigan klassda ham public, ham private usullar va xususiyatlar mavjud bo'ladi.

Keling, misol orqali ko'rib chiqaylik. Bizda quyidagi private usuli bo'lgan treyt bor deylik:

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

Keling, treytimizni klassga ulaymiz:

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

Treytning private usulidan foydalanamiz:

php<?php
  class Test
  {
    use TestTrait; // treytni ulaymiz
    
    public function __construct()
    {
      echo $this->method(); // '!!!' chiqaradi
    }
  }
  
  new Test;
?>