Приоритет на методите при работа с трейтове в ООП в PHP

Ако в клас и в трейт има метод със същото име, тогава методът на класа ще презапише метода на трейта:

php<?php
  trait TestTrait
  {
    // Метод с име method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Същият метод с име method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // ще изведе 'test' - сработи методът на самия клас
?>

Ако самият клас няма такъв метод, но има конфликт на имената на методите на трейта и методите на родителския клас, тогава методите на трейта имат приоритет:

php<?php
  trait TestTrait
  {
    // Метод с име method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Родителски клас:
  class ParentClass
  {
    // Метод с име method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Класът наследява метод method от родителския:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // ще изведе 'trait', тъй като трейтът има приоритет
?>