Προτεραιότητα μεθόδων κατά την εργασία με traits στο OOP της PHP

Εάν μια κλάση και ένα trait έχουν μια μέθοδο με το ίδιο όνομα, τότε η μέθοδος της κλάσης θα παρακάμψει τη μέθοδο του trait:

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' - ενεργοποιήθηκε η μέθοδος της ίδιας της κλάσης
?>

Εάν η ίδια η κλάση δεν έχει μια τέτοια μέθοδο, αλλά υπάρχει μια διένεξη ονομάτων μεταξύ μεθόδων του trait και μεθόδων της γονικής κλάσης, τότε οι μέθοδοι του trait έχουν προτεραιότητα:

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', αφού το trait έχει προτεραιότητα
?>