Meetodite prioriteet traitidega töötamisel OOP-s PHP-s

Kui klassis ja traitis on sama nimega meetod, siis klassi meetod kirjutab üle trait'i meetodi:

php<?php
  trait TestTrait
  {
    // Meetod nimega method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Sama meetod nimega method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // väljastab 'test' - töötas klassi enda meetod
?>

Kui klassil endal sellist meetodit pole, kuid on olemas trait'i meetodite ja vanemaklassi meetodite nimetuste konflikt, siis trait'i meetoditel on prioriteet:

php<?php
  trait TestTrait
  {
    // Meetod nimega method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Vanemaklass:
  class ParentClass
  {
    // Meetod nimega method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Klass pärib meetodi method vanemalt:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // väljastab 'trait', sest trait'il on prioriteet
?>