Metodų prioritetas dirbant su traitais OOP PHP

Jei klasėje ir traite yra to paties pavadinimo metodas, tai klasės metodas perrašys traito metodą:

php<?php
  trait TestTrait
  {
    // Metodas su pavadinimu method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Toks pat metodas su pavadinimu method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // išves 'test' - suveikė paties klasės metodas
?>

Jei pati klasė neturi tokio metodo, bet yra traito metodų ir tėvinės klasės metodų pavadinimų konfliktas, tai traito metodai turi prioritetą:

php<?php
  trait TestTrait
  {
    // Metodas su pavadinimu method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Tėvinė klasė:
  class ParentClass
  {
    // Metodas su pavadinimu method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Klasė paveldi metodą method iš tėvinės:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // išves 'trait', nes traitas turi prioritetą
?>