Абстрактни методи на трейтове в ООП в PHP

В трейтове някои методи могат да бъдат декларирани като абстрактни. В този случай класът, който използва този трейт, ще трябва да реализира такъв метод. В този случай абстрактните методи на трейта не могат да бъдат частни.

Нека разгледаме пример. Да предположим, че имаме следния трейт:

TestTrait.php<?php
  trait TestTrait
  {
    public function method1()
    {
      return 1;
    }
    
    abstract public function method2();
  }
?>

Да предположим, че нашият трейт се използва от класа Test. Наличието на абстрактен метод в трейта ще задължи програмиста да го реализира в класа, в противен случай ще има PHP грешка.

Нека създадем класа Test заедно с метода method2:

Test.php<?php
  class Test
  {
    use TestTrait; // използваме трейта
    
    // Реализираме абстрактния метод:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Копирайте кода на моя трейт TestTrait и кода на моя клас Test. Премахнете от класа метода method2. Уверете се, че липсата на неговата реализация води до PHP грешка.