Prioritet metoda pri radu sa trejtovima u OOP-u u PHP-u

Ako u klasi i u trejtu postoji metod istog imena, onda će metod klase zameniti metod trejta:

php<?php
  trait TestTrait
  {
    // Metod po imenu method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Isti metod po imenu method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // ispisaće 'test' - aktivirao se metod same klase
?>

Ako sama klasa nema takav metod, ali postoji sukob imena metoda trejta i metoda roditeljske klase, onda metodi trejta imaju prioritet:

php<?php
  trait TestTrait
  {
    // Metod po imenu method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Roditeljska klasa:
  class ParentClass
  {
    // Metod po imenu method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Klasa nasleđuje metod method od roditelja:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // ispisaće 'trait', jer trejt ima prioritet
?>