PHP да ООП да Трейтлар билан ишлашда методларнинг устунлиги

Агар классда ва трейтда бир хил номли метод бўлса, у ҳолда класснинг метуди трейтнинг метудини ўзгартиради:

php<?php
  trait TestTrait
  {
    // Method номли метод:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Шу номли метод:
    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';
    }
  }
  
  // Class method методini ота-онадан мерос қилиб олади:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // 'trait' чиқади, чунки трейт устунликка эга
?>