PHP-ի ՕՕՊ-ում տրեյթների հետ աշխատելիս մեթոդների առաջնահերթությունը

Եթե դասում և տրեյթում կա նույնանուն մեթոդ, ապա դասի մեթոդը կգերակայի տրեյթի մեթոդը:

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' - աշխատել է դասի սեփական մեթոդը
?>

Եթե դասն ինքը չունի այդպիսի մեթոդ, բայց կա տրեյթի մեթոդների և ծնողական դասի մեթոդների անվանումների հակասություն, ապա տրեյթի մեթոդներն ունեն առաջնահերթություն:

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', քանի որ տրեյթն ունի առաջնահերթություն
?>