PHP OOP හි traits සමඟ වැඩ කිරීමේදී ක්‍රම ප්‍රතිප්‍රිය

වර්ගයක සහ trait එකක එකම නමින් ක්‍රමයක් පවතී නම්, වර්ගයේ ක්‍රමය trait එකේ ක්‍රමය අතිලේඛනය කරයි:

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' ප්‍රතිදානය කරයි - වර්ගයේම ක්‍රමය ක්‍රියාත්මක විය
?>

වර්ගයටම එවැනි ක්‍රමයක් නොමැති නමුත් trait එකේ ක්‍රම සහ මූලික වර්ගයේ ක්‍රම යන නම් ගැටුමක් පවතින විට, trait ක්‍රම ප්‍රතිප්‍රිය ලබා ගනී:

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' ප්‍රතිදානය කරයි, මන්ද trait එකට ප්‍රතිප්‍රිය ඇත
?>