PHP-də OOP-də treytlərlə işləyərkən metodların prioriteti

Əgər sinifdə və treytdə eyniadlı metod varsa, onda sinfin metodu treytin metodunu əvəz edəcək:

php<?php
  trait TestTrait
  {
    // Method adlı metod:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Eyni Method adlı metod:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // 'test' çıxardacaq - sinfin öz metodu işlədi
?>

Əgər sinfin özü belə bir metoda malik deyilsə, lakin treytin metodları və valideyn sinfinin metodlarının adları arasında konflikt varsa, onda treytin metodları prioritetə malikdir:

php<?php
  trait TestTrait
  {
    // Method adlı metod:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Valideyn sinfi:
  class ParentClass
  {
    // Method adlı metod:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Sinif Method metodunu valideyndən miras alır:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // 'trait' çıxardacaq, çünki treyt prioritetə malikdir
?>