Priorita metód pri práci s traitmi v OOP v PHP

Ak trieda a trait majú metódu s rovnakým názvom, metóda triedy prepíše metódu trait-u:

php<?php
  trait TestTrait
  {
    // Metóda s názvom method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Rovnaká metóda s názvom method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // vypíše 'test' - spustila sa metóda samotnej triedy
?>

Ak samotná trieda nemá takúto metódu, ale existuje konflikt názvov metód trait-u a metód rodičovskej triedy, potom metódy trait-u majú prioritu:

php<?php
  trait TestTrait
  {
    // Metóda s názvom method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Rodičovská trieda:
  class ParentClass
  {
    // Metóda s názvom method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Trieda zdedí metódu method od rodiča:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // vypíše 'trait', pretože trait má prioritu
?>