PHP-তে OOP-এ ট্রেইট নিয়ে কাজ করার সময় পদ্ধতির অগ্রাধিকার

যদি একটি ক্লাস এবং একটি ট্রেইটে একই নামের একটি পদ্ধতি থাকে, তাহলে ক্লাসের পদ্ধতিটি ট্রেইটের পদ্ধতিকে ওভাররাইড করবে:

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', কারণ ট্রেইটের অগ্রাধিকার আছে
?>