Keutamaan Kaedah Semasa Bekerja dengan Traits dalam OOP PHP

Jika dalam kelas dan dalam trait terdapat kaedah yang sama namanya, maka kaedah kelas akan menggantikan kaedah trait:

php<?php
  trait TestTrait
  {
    // Kaedah dengan nama method:
    public function method()
    {
      return 'trait';
    }
  }
  
  class TestClass
  {
    use TestTrait;
    
    // Kaedah yang sama dengan nama method:
    public function method()
    {
      return 'test';
    }
  }
  
  $test = new TestClass;
  echo $test->method(); // akan memaparkan 'test' - kaedah kelas itu sendiri yang berfungsi
?>

Jika kelas itu sendiri tidak mempunyai kaedah sedemikian, tetapi terdapat konflik nama antara kaedah trait dan kaedah kelas induk, maka kaedah trait mempunyai keutamaan:

php<?php
  trait TestTrait
  {
    // Kaedah dengan nama method:
    public function method()
    {
      return 'trait';
    }
  }
  
  // Kelas induk:
  class ParentClass
  {
    // Kaedah dengan nama method:
    public function method()
    {
      return 'parent';
    }
  }
  
  // Kelas mewarisi kaedah method dari induk:
  class TestClass extends ParentClass
  {
    use TestTrait;
  }
  
  $test = new TestClass;
  echo $test->method(); // akan memaparkan 'trait', kerana trait mempunyai keutamaan
?>