Priorita metod při práci s trait v OOP v PHP

Pokud třída a trait mají metodu se stejným názvem, metoda třídy přepíše metodu traitu:

php<?php
  trait TestTrait
  {
    // Metoda s názvem method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Stejná metoda s názvem method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // vypíše 'test' - provedla se metoda samotné třídy
?>

Pokud samotná třída takovou metodu nemá, ale dochází ke konfliktu názvů metod traitu a metod rodičovské třídy, pak metody traitu mají prioritu:

php<?php
  trait TestTrait
  {
    // Metoda s názvem method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Rodičovská třída:
  class ParentClass
  {
    // Metoda s názvem method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Třída dědí metodu method od rodiče:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // vypíše 'trait', protože trait má prioritu
?>