Përparësia e Metodave gjatë Punës me Traits në OOP në PHP

Nëse në një klasë dhe në një trait ekziston një metodë me të njëjtin emër, atëherë metoda e klasës do të rishkruajë metodën e trait-it:

php<?php
  trait TestTrait
  {
    // Metodë me emrin method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // E njëjta metodë me emrin method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // do të shfaqë 'test' - u ekzekutua metoda e vetë klasës
?>

Nëse vetë klasa nuk e ka një metodë të tillë, por ka një konflikt emrash midis metodave të trait-it dhe metodave të klasës prind, atëherë metodat e trait-it kanë përparësi:

php<?php
  trait TestTrait
  {
    // Metodë me emrin method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Klasa prind:
  class ParentClass
  {
    // Metodë me emrin method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Klasa trashëgon metodën method nga prindi:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // do të shfaqë 'trait', sepse trait-i ka përparësi
?>