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', себебі трейттің басымдығы бар
?>