Апстрактне методе трејтова у ООП у 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-у.